Självstudie: Använda Azure CLI och Azure Portal för att konfigurera IoT Hub dirigering av meddelanden
Med meddelanderoutning kan du skicka telemetridata från dina IoT-enheter till inbyggda Event Hub-kompatibla slutpunkter eller anpassade slutpunkter som bloblagring, Service Bus-köer, Service Bus-ämnen och Event Hubs. Om du vill konfigurera anpassad meddelanderoutning skapar du routningsfrågor för att anpassa vägen som matchar ett visst villkor. Därefter dirigeras inkommande data automatiskt till slutpunkterna av IoT Hub. Om ett meddelande inte matchar någon av de definierade routningsfrågorna dirigeras det till standardslutpunkten.
I den här självstudien i två delar lär du dig att konfigurera och använda dessa anpassade routningsfrågor med IoT Hub. Du dirigerar meddelanden från en IoT-enhet till en av flera slutpunkter, inklusive bloblagring och en Service Bus kö. Meddelanden till Service Bus hämtas av en logikapp och skickas via e-post. Meddelanden som inte har anpassad meddelanderoutning definierad skickas till standardslutpunkten och hämtas sedan av Azure Stream Analytics och visas i en Power BI visualisering.
Utför följande uppgifter för att slutföra del 1 och 2 av den här självstudien:
Del I: Skapa resurser, konfigurera meddelandedirigering
- Skapa resurserna – en IoT-hubb, ett lagringskonto, en Service Bus kö och en simulerad enhet. Detta kan göras med hjälp av Azure Portal, en Azure Resource Manager mall, Azure CLI eller Azure PowerShell.
- Konfigurera slutpunkterna och meddelandevägarna i IoT Hub för lagringskontot och Service Bus kön.
Del II: Skicka meddelanden till hubben, visa dirigerade resultat
- Skapa en logikapp som utlöses och skickar e-post när ett meddelande läggs till i Service Bus-kön.
- Ladda ned och kör en app som simulerar en IoT-enhet som skickar meddelanden till hubben för de olika dirigeringsalternativen.
- Skapa en Power BI-visualisering för data som skickas till standardslutpunkten.
- Visa resultatet ...
- ...i Service Bus-kön och e-postmeddelandena.
- ...i lagringskontot.
- ...i Power BI-visualiseringen.
Förutsättningar
För del 1 av den här självstudien:
- Du måste ha en Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
För del 2 av den här självstudien:
- Du måste ha slutfört del 1 av den här självstudien och ha resurserna fortfarande tillgängliga.
- Installera Visual Studio.
- Ha åtkomst till ett Power BI för att analysera standardslutpunktens Stream Analytics. (Prova Power BI utan kostnad.)
- Ha ett arbets- eller skolkonto för att skicka e-postaviseringar.
- Kontrollera att port 8883 är öppen i brandväggen. Exemplet i den här självstudien använder MQTT-protokollet, som kommunicerar via port 8883. Den här porten kan blockeras i vissa företags- och utbildningsnätverksmiljöer. Mer information och sätt att komma runt det här problemet finns i Ansluta till IoT Hub (MQTT).
Använda Azure Cloud Shell
Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln utan att behöva installera något i din lokala miljö.
Så här startar du Azure Cloud Shell:
| Alternativ | Exempel/länk |
|---|---|
| Välj Prova i det övre högra hörnet av ett kodblock. Om du väljer Prova kopieras koden inte automatiskt till Cloud Shell. | ![]() |
| Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | ![]() |
| Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. | ![]() |
Så här kör du koden i den här artikeln i Azure Cloud Shell:
Starta Cloud Shell.
Kopiera koden genom att klicka på knappen Kopiera på ett kodblock.
Klistra in koden i Cloud Shell-sessionen genom att välja Ctrl+Skift+V på Windows och Linux eller genom att välja Cmd+Skift+V på macOS.
Välj Retur för att köra koden.
Skapa bas resurser
Innan du kan konfigurera meddelanderoutning måste du skapa en IoT-hubb, ett lagrings konto och en Service Bus kö. Dessa resurser kan skapas med hjälp av någon av de fyra artiklarna som är tillgängliga i del 1 av den här självstudien: Azure Portal, en Azure Resource Manager mall, Azure CLI eller Azure PowerShell.
Använd samma resursgrupp och plats för alla resurser. När du är klar kan du ta bort alla resurser i ett steg genom att ta bort resurs gruppen.
Nedan visas en sammanfattning av de steg som ska utföras i följande avsnitt:
Skapa en resurs grupp.
Skapa en IoT-hubb på S1-nivån. Lägg till en konsumentgrupp till din IoT-hubb. Konsumentgruppen används av Azure Stream Analytics när data hämtas.
Anteckning
Du måste använda en Iot-hubb på en betalnivå för att slutföra den här självstudien. På den kostnadsfria nivån kan bara ställa in en slutpunkt, och den här självstudien kräver flera slutpunkter.
Skapa ett V1-standardlagringskonto med Standard_LRS-replikering.
Skapa ett namnområde och en kö för Service Bus.
Skapa en enhetsidentitet för den simulerade enheten som skickar meddelanden till din hubb. Spara nyckeln för testfasen. (Om du skapar en Resource Manager-mall görs detta när du har distribuerat mallen.)
Använda Azure CLI för att skapa basresurserna
Den här självstudien använder Azure CLI för att skapa basresurserna och använder sedan Azure Portal för att visa hur du konfigurerar meddelanderoutning och konfigurerar den virtuella enheten för testning.
Kopiera och klistra in skriptet nedan i Cloud Shell och tryck på Retur. Skriptet körs en rad i taget. Detta skapar basresurserna för den här självstudien, inklusive lagringskontot, IoT Hub, Service Bus namnområdet och Service Bus kön.
Det finns flera resursnamn som måste vara globalt unika, till exempel IoT Hub namn och lagringskontonamn. För att underlätta detta läggs resursnamnen till med ett slumpmässigt alfanumeriskt värde som kallas randomValue. randomValue genereras en gång överst i skriptet och läggs till i resursnamnen efter behov i hela skriptet. Om du inte vill att det ska vara slumpmässigt kan du ange det till en tom sträng eller till ett specifikt värde.
Tips
Ett tips om felsökning: Det här skriptet använder fortsättningssymbolen (omsnedstrecket ) för \ att göra skriptet mer lättläst. Om du har problem med att köra skriptet kontrollerar du att Cloud Shell-sessionen körs och att det inte finns några blanksteg efter något av bash omsnedstrecken.
# This retrieves the subscription id of the account
# in which you're logged in.
# This field is used to set up the routing queries.
subscriptionID=$(az account show --query id)
# Concatenate this number onto the resources that have to be globally unique.
# You can set this to "" or to a specific value if you don't want it to be random.
# This retrieves a random value.
randomValue=$RANDOM
# Set the values for the resource names that
# don't have to be globally unique.
location=westus
resourceGroup=ContosoResources
iotHubConsumerGroup=ContosoConsumers
containerName=contosoresults
# Create the resource group to be used
# for all the resources for this tutorial.
az group create --name $resourceGroup \
--location $location
# The IoT hub name must be globally unique,
# so add a random value to the end.
iotHubName=ContosoTestHub$randomValue
echo "IoT hub name = " $iotHubName
# Create the IoT hub.
az iot hub create --name $iotHubName \
--resource-group $resourceGroup \
--sku S1 --location $location
# Add a consumer group to the IoT hub for the 'events' endpoint.
az iot hub consumer-group create --hub-name $iotHubName \
--name $iotHubConsumerGroup
# The storage account name must be globally unique,
# so add a random value to the end.
storageAccountName=contosostorage$randomValue
echo "Storage account name = " $storageAccountName
# Create the storage account to be used as a routing destination.
az storage account create --name $storageAccountName \
--resource-group $resourceGroup \
--location $location \
--sku Standard_LRS
# Get the primary storage account key.
# You need this to create the container.
storageAccountKey=$(az storage account keys list \
--resource-group $resourceGroup \
--account-name $storageAccountName \
--query "[0].value" | tr -d '"')
# See the value of the storage account key.
echo "storage account key = " $storageAccountKey
# Create the container in the storage account.
az storage container create --name $containerName \
--account-name $storageAccountName \
--account-key $storageAccountKey \
--public-access off
# The Service Bus namespace must be globally unique,
# so add a random value to the end.
sbNamespace=ContosoSBNamespace$randomValue
echo "Service Bus namespace = " $sbNamespace
# Create the Service Bus namespace.
az servicebus namespace create --resource-group $resourceGroup \
--name $sbNamespace \
--location $location
# The Service Bus queue name must be globally unique,
# so add a random value to the end.
sbQueueName=ContosoSBQueue$randomValue
echo "Service Bus queue name = " $sbQueueName
# Create the Service Bus queue to be used as a routing destination.
az servicebus queue create --name $sbQueueName \
--namespace-name $sbNamespace \
--resource-group $resourceGroup
Nu när basresurserna har konfigurerats kan du konfigurera meddelanderoutning i Azure Portal.
Konfigurera meddelandedirigering
Du kommer att dirigera meddelanden till olika resurser baserat på egenskaper som är anslutna till meddelandet av den simulerade enheten. Meddelanden som inte är dirigeringsanpassade skickas till standardslutpunkten (meddelanden/händelser). I nästa självstudie skickar du meddelanden till IoT Hub och kan se att de dirigeras till olika destinationer.
| Värde | Resultat |
|---|---|
| level="storage" | Skriv till Azure Storage. |
| level="critical" | Skriv till en Service Bus-kö. En logikapp hämtar meddelandet från kön och använder Office 365 för att skicka meddelandet via e-post. |
| standard | Visa dessa data med Power BI. |
Det första steget är att konfigurera slut punkten som data ska dirigeras till. Det andra steget är att konfigurera den meddelande väg som använder den slut punkten. När du har konfigurerat routningen kan du Visa slut punkterna och meddelande vägarna i portalen.
Dirigera till ett lagringskonto
Konfigurera nu routning för lagringskontot. Du gå till fönstret meddelanderoutning och lägger till en väg. När du lägger till vägen, definierar du en ny slutpunkt för den. När den här routningen har ställts in skrivs meddelanden där nivåegenskapen är inställd på lagring automatiskt till ett lagringskonto.
Anteckning
Data kan skrivas till bloblagring i Apache Avro-format, vilket är standard eller JSON.
Kodningsformatet kan bara anges när bloblagringsslutpunkten konfigureras. Formatet kan inte ändras för en slutpunkt som redan har ställts in. När du använder JSON-kodning måste du ange contentType till JSON och contentEncoding till UTF-8 i meddelandesystemets egenskaper.
Mer detaljerad information om hur du använder en bloblagringsslutpunkt finns i vägledningen om routning till lagring.
Nu ställer du in konfigurationen för meddelanderoutning till Azure Storage.
I Azure Portalväljer du Resursgrupper och sedan din resursgrupp. I den här självstudien används ContosoResources.
Välj IoT-hubben under listan över resurser. I självstudien används ContosoTestHub.
Välj Meddelanderoutning i den mittersta kolumnen som säger Meddelandehantering*. Välj + Lägg till** för att se fönstret Lägg till en väg. Välj +Lägg till slutpunkt bredvid fältet Slutpunkt och välj sedan Storage. Du ser fönstret Lägg till en lagringsslutpunkt.

Ange ett namn på slutpunkten. I den här självstudien används ContosoStorageEndpoint.

Välj Välj en container. Det tar dig till en lista över dina lagringskonton. Välj den som du konfigurerade i förberedelsesteget. i den här självstudien används contosostorage. Den visar en lista över containrar i det lagringskontot. Välj den container som du konfigurerade i förberedelsesteget. I självstudien används contosoresults. Klicka sedan på Välj längst ned på skärmen. Den återgår till ett annat fönster Lägg till en lagringsslutpunkt. Du ser URL:en för den valda containern.
Ange kodningen till AVRO eller JSON. I den här självstudiekursen används standardinställningar för resten av fälten. Det här fältet är nedtonat om den valda regionen inte stöder JSON-kodning. Ange filformatet.
Anteckning
Ange formatet för blobnamnet med formatet för blobfilens namn. Standardvärdet är
{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}. Formatet måste innehålla {iothub}, {partition}, {YYYY}, {MM}, {DD}, {HH} och {mm} i valfri ordning.Exempel med standardinställt namnformat för blobfilen: om hubbnamnet är ContosoTestHub och datum/tid är 30 oktober 2018 kl. 10:56 ser blobnamnet ut så här:
ContosoTestHub/0/2018/10/30/10/56.Blobarna skrivs i AVRO-format som standard.
Välj Skapa längst ned på sidan för att skapa lagringsslutpunkten och lägga till den i vägen. Du kommer tillbaka till fönstret Lägg till en väg.
Slutför resten av routningsfrågans information. Den här frågan anger kriterier för att skicka meddelanden till den lagringscontainer du just lade till som en slutpunkt. Fyll i fälten på skärmen.
Fyll i resten av fälten.
Namn: Ange ett namn för din väg. I den här självstudien används ContosoStorageRoute. Ange sedan slutpunkten för lagring. I den här självstudien används ContosoStorageEndpoint.
Ange Datakälla: Välj Meddelanden om enhettelemetri i listrutan.
Välj Aktivera väg: Kontrollera att det här fältet är inställt på
enabled.Routningsfråga: Ange
level="storage"som frågesträng.

Välj Spara. När den är klar returneras den till fönstret meddelanderoutning där du kan se din nya routningsfråga för lagring. Stäng fönstret Meddelanderoutning, som återgår till sidan Resursgrupp.
Dirigera till en Service Bus kö
Konfigurera nu routning för Service Bus-kön. Du gå till fönstret meddelanderoutning och lägger till en väg. När du lägger till vägen definierar Service Bus en kö som slutpunkt för vägen. När den här vägen har ställts in skrivs meddelanden där nivåegenskapen är inställd på kritisk till Service Bus-kön, som utlöser en logikapp som sedan skickar ett e-postmeddelande med informationen.
På sidan Resursgrupp väljer du din IoT-hubb och sedan Meddelanderoutning.
I fönstret Meddelanderoutning väljer du + Lägg till.
I fönstret Lägg till en väg väljer du + Lägg till nära +slutpunkt. Välj Service Bus-kö. Du får fram fönstret Lägg till Service Bus-slutpunkt.

Fyll i resten av fälten:
Slutpunktsnamn: Ange ett namn på slutpunkten. I den här självstudien används ContosoSBQEndpoint.
Service Bus namnområde: Använd listrutan för att välja det Service Bus-namnområde som du konfigurerade i förberedelsestegen. I den här självstudien används ContosoSBNamespace.
Service Bus: Använd listrutan för att välja Service Bus kön. I den här självstudien används contososbqueue.
Välj Skapa för att lägga till slutpunkten Service Bus första kön. Du kommer tillbaka till fönstret Lägg till en väg.

Nu slutför du resten av informationen för routningsfrågan. Den här frågan anger villkoren för att skicka meddelanden till den Service Bus som du just lade till som en slutpunkt. Fyll i fälten på skärmen.
Namn: Ange ett namn för din väg. I den här självstudien används ContosoSBQueueRoute.
Slutpunkt: visar den slutpunkt som du nyss skapade.
Datakälla: Välj Enhetstelemetrimeddelanden från listrutan.
Aktivera väg: Ställ in det här fältet på
enable."Routningsfråga:
level="critical"Ange som routningsfråga.
Välj Spara. När den återgår till fönstret Vägar visas båda de nya vägarna.

Du kan se de anpassade slutpunkter som du har ställt in genom att välja fliken Anpassade slutpunkter.

Stäng fönstret Meddelanderoutning så att du kommer tillbaka till Resursgruppfönstret.
Skapa en simulerad enhet
Skapa sedan en enhetsidentitet och spara nyckeln för framtida bruk. Den är enhetsidentiteten används av simuleringsprogrammet för att skicka meddelanden till IoT-hubben. Den här funktionen är inte tillgänglig i PowerShell eller när du använder en Azure Resource Manager mall. Följande steg visar hur du skapar den simulerade enheten med hjälp av Azure Portal.
Öppna Azure Portal och logga in på ditt Azure-konto.
Välj Resursgrupper och välj sedan din resursgrupp. I den här självstudien används ContosoResources.
I listan över resurser väljer du din IoT-hubb. I självstudien används ContosoTestHub. Välj IoT-enheter från hubbfönstret.
Välj +Lägg till enhet i fönstret IoT-enheter. I rutan Lägg till enhet fyller du i enhets-ID. I den här självstudien används Contoso-Test-Device. Lämna nycklarna tomma och markera Generera nycklar automatiskt. Kontrollera att Connect device to IoT hub (Anslut enhet till IoT-hubb) är aktiverat. Välj Spara.

Nu när den har skapats väljer du enheten för att se de genererade nycklarna. Välj ikonen Kopiera på primärnyckeln och spara den någonstans, till exempel Anteckningar för testfasen i den här självstudien.

Nästa steg
Nu när du har konfigurerat resurserna och meddelandevägarna går du vidare till nästa självstudie för att lära dig hur du skickar meddelanden till IoT-hubben och ser hur de dirigeras till olika mål.


