Megosztás a következőn keresztül:


Rövid útmutató: Azure IoT Hub és tárfiók üzembe helyezése a Bicep használatával

Ebben a rövid útmutatóban a Bicep használatával hoz létre egy IoT Hubot, egy Azure Storage-fiókot, valamint egy útvonalat, amellyel üzeneteket küldhet az IoT Hubról a tárolóba. A központ úgy van konfigurálva, hogy a központnak küldött üzenetek automatikusan a tárfiókba legyenek irányítva, ha megfelelnek az útválasztási feltételnek. A rövid útmutató végén megnyithatja a tárfiókot, és megtekintheti az elküldött üzeneteket.

A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist és megbízható típusbiztonságot kínál, valamint biztosítja a kódok újrafelhasználhatóságát. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.

Előfeltételek

A Bicep-fájl áttekintése

Az ebben a rövid útmutatóban használt Bicep-fájlt az Azure Gyorsindítási sablonokból hívjuk meg101-iothub-auto-route-messages.

Két Azure-erőforrás van definiálva a Bicep-fájlban:

@description('Define the project name or prefix for all objects.')
@minLength(1)
@maxLength(11)
param projectName string = 'contoso'

@description('The datacenter to use for the deployment.')
param location string = resourceGroup().location

@description('The SKU to use for the IoT Hub.')
param skuName string = 'S1'

@description('The number of IoT Hub units.')
param skuUnits int = 1

@description('Partitions used for the event stream.')
param d2cPartitions int = 4

var iotHubName = '${projectName}Hub${uniqueString(resourceGroup().id)}'
var storageAccountName = '${toLower(projectName)}${uniqueString(resourceGroup().id)}'
var storageEndpoint = '${projectName}StorageEndpont'
var storageContainerName = '${toLower(projectName)}results'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {
    allowBlobPublicAccess: false
    minimumTlsVersion: 'TLS1_2'
    supportsHttpsTrafficOnly: true
  }
}

resource container 'Microsoft.Storage/storageAccounts/blobServices/containers@2023-01-01' = {
  name: '${storageAccountName}/default/${storageContainerName}'
  properties: {
    publicAccess: 'None'
  }
  dependsOn: [
    storageAccount
  ]
}

resource IoTHub 'Microsoft.Devices/IotHubs@2023-06-30' = {
  name: iotHubName
  location: location
  sku: {
    name: skuName
    capacity: skuUnits
  }
  properties: {
    eventHubEndpoints: {
      events: {
        retentionTimeInDays: 1
        partitionCount: d2cPartitions
      }
    }
    routing: {
      endpoints: {
        storageContainers: [
          {
            connectionString: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
            containerName: storageContainerName
            fileNameFormat: '{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}'
            batchFrequencyInSeconds: 100
            maxChunkSizeInBytes: 104857600
            encoding: 'JSON'
            name: storageEndpoint
          }
        ]
      }
      routes: [
        {
          name: 'ContosoStorageRoute'
          source: 'DeviceMessages'
          condition: 'level="storage"'
          endpointNames: [
            storageEndpoint
          ]
          isEnabled: true
        }
      ]
      fallbackRoute: {
        name: '$fallback'
        source: 'DeviceMessages'
        condition: 'true'
        endpointNames: [
          'events'
        ]
        isEnabled: true
      }
    }
    messagingEndpoints: {
      fileNotifications: {
        lockDurationAsIso8601: 'PT1M'
        ttlAsIso8601: 'PT1H'
        maxDeliveryCount: 10
      }
    }
    enableFileUploadNotifications: false
    cloudToDevice: {
      maxDeliveryCount: 10
      defaultTtlAsIso8601: 'PT1H'
      feedback: {
        lockDurationAsIso8601: 'PT1M'
        ttlAsIso8601: 'PT1H'
        maxDeliveryCount: 10
      }
    }
  }
}

output name string = IoTHub.name
output resourceId string = IoTHub.id
output resourceGroupName string = resourceGroup().name
output location string = location

A Bicep-fájl üzembe helyezése

Ez a szakasz a Bicep-fájl üzembe helyezésének lépéseit ismerteti.

  1. Töltse le a main.bicep fájlt az Azure Gyorsindítási sablonok adattárából.

  2. Hozza létre az erőforrásokat a Bicep-fájl Azure CLI-vel történő üzembe helyezésével.

    az group create --name ContosoResourceGrp --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep
    

    Az üzembe helyezés több percet is igénybe vehet. Amikor az üzembe helyezés befejeződik, látnia kell az üzembe helyezett erőforrásokat részletező kimenetet.

Eszközről felhőbe irányuló üzenetek küldése

Ebben a szakaszban regisztrál egy eszközt az új IoT Hubon, majd üzeneteket küld az eszközről az IoT Hubnak. Az IoT Hubban konfigurált Bicep-fájl által konfigurált útvonal csak akkor küld üzeneteket a tárolónak, ha tartalmazzák az üzenettulajdonságot level=storage. Annak ellenőrzéséhez, hogy ez az útválasztási feltétel a várt módon működik-e, küldünk néhány üzenetet ezzel a tulajdonsággal, és néhányat anélkül.

Tipp.

Ez a rövid útmutató az Azure CLI szimulált eszközét használja a kényelem érdekében. Az eszközről a felhőbe irányuló üzenetek útválasztáshoz használható üzenettulajdonságokkal történő küldéséhez lásd : HubRoutingSample a .NET-hez készült Azure IoT SDK-ban.

  1. Kérje le annak az IoT Hubnak a nevét, amelyet a sablon létrehozott Önnek.

    Ha az előző szakaszban az alapértelmezett parancsokat használta, az erőforrások a ContosoResourceGrp erőforráscsoportban lettek létrehozva. Ha másik erőforráscsoportot használt, frissítse a következő parancsot az egyezéshez.

    az iot hub list --resource-group ContosoResourceGrp --output table
    
  2. Másolja ki az IoT Hub nevét a kimenetből. Úgy kell formázni, mint contosoHub{randomidentifier}

  3. Adjon hozzá egy eszközt a központhoz.

    az iot hub device-identity create --device-id contosoDevice --hub-name {YourIoTHubName} 
    
  4. Szimulálja az eszközt, és küldjön eszközről felhőbe irányuló üzeneteket.

    A --data paraméter lehetővé teszi az üzenet törzsének beállítását.

    az iot device simulate \
      --device-id contosoDevice \
      --hub-name {YourIoTHubName} \
      --data "This message won't be routed."
    

    A szimulátor 100 üzenetet küld, majd megszakad. Ebben a rövid útmutatóban nem kell mind a 100-ra várnia.

    Tipp.

    Az Azure CLI nem nyomtatja ki az üzeneteket, miközben elküldi őket. Ha meg szeretné tekinteni az üzeneteket a központ érkezésekor, telepítheti a Visual Studio Code Azure IoT Hub-bővítményét, és használhatja a beépített végpont figyelésére.

  5. Az eszközről a felhőbe irányuló üzenetek küldése a tárolóba irányítandó üzenetek küldéséhez.

    A --properties paraméter lehetővé teszi, hogy üzenet-, alkalmazás- vagy rendszertulajdonságokat adjunk hozzá az alapértelmezett üzenethez. Ebben a rövid útmutatóban az IoT Hub útvonala olyan üzeneteket keres, amelyek tartalmazzák az üzenet tulajdonságát level=storage.

    az iot device simulate \
      --device-id contosoDevice \
      --hub-name {YourIoTHubName} \
      --properties level=storage \
      --data "This message will be routed to storage."
    

Átirányított üzenetek áttekintése

  1. Jelentkezzen be az Azure Portalra , válassza ki az erőforráscsoportot, majd válassza ki a tárfiókot.

  2. Fúrjon le a tárfiókba, amíg nem talál fájlokat.

    Tekintse meg a tárfiók fájljait

  3. Válassza ki az egyik fájlt, majd válassza a Letöltés lehetőséget, és töltse le a fájlt egy későbbi helyen. A neve numerikus, például 47. Adja hozzá a .txt a végéhez, majd kattintson duplán a fájlra a megnyitásához.

  4. A fájl megnyitásakor minden sor egy másik üzenethez tartozik. Az egyes üzenetek törzse is titkosítva van. Ahhoz, hogy lekérdezéseket hajthasson végre az üzenet törzsén.

    Az elküldött üzenetek megtekintése

    Feljegyzés

    Ezek az üzenetek UTF-8-ban és base64-ben vannak kódolva. Ha visszaolvassa az üzenetet, a base64-ből és az utf-8-ból kell dekódolnia, hogy ASCII-ként olvashassa. Ha érdekli, az útválasztási oktatóanyag ReadOneRowFromFile metódusával elolvashat egyet az üzenetfájlok egyikéből, és asCII-re kódolhatja. A ReadOneRowFromFile abban az IoT C# SDK-adattárban található, amelyet a rövid útmutatóhoz kibontott. A mappa tetején található elérési út: ./iothub/device/samples/how to guides/HubRoutingSample/Program.cs Állítsa a logikai readTheFile értéket igazra, és a lemezen lévő fájl elérési útját kódolja, és megnyitja és lefordítja a fájl első sorát.

Ebben a rövid útmutatóban üzembe helyezett egy Bicep-fájlt egy IoT Hub és egy tárfiók létrehozásához, majd futtatott egy programot, amely üzeneteket küld a központnak. Az üzenetek az üzenet tulajdonságaik alapján vannak irányítva, és a tárfiókban vannak tárolva, ahol megtekinthetők.

Az erőforrások eltávolítása

Ha már nincs szüksége a létrehozott erőforrásokra, törölje az erőforráscsoportot.

az group delete --name exampleRG

Következő lépések