Cvičení – nasazení funkce Azure do IoT Edge

Dokončeno

Vyfiltrujte telemetrii odesílanou zařízením.

Vzpomeňte si, že chcete minimalizovat množství dat odesílaných z každého úložiště. Pokud chcete snížit množství telemetrie odesílané do aplikace IoT Central, chcete filtrovat data na zařízení IoT Edge.

Tady použijete Azure Functions běžící na zařízení IoT Edge k implementaci filtru. Filtr zajišťuje, že zařízení odesílá telemetrii pouze v případech, kdy je okolní teplota vyšší než 21°C.

Poznámka:

Toto cvičení není povinné. Pokud chcete absolvovat toto cvičení, budete muset před zahájením vytvořit předplatné Azure. Pokud nemáte účet Azure nebo ho v tuto chvíli nechcete vytvořit, můžete si přečíst pokyny, abyste porozuměli zobrazeným informacím.

Konfigurace registru kontejneru

Vaše zařízení IoT Edge bude muset stáhnout a nainstalovat vlastní modul Azure Functions, který implementuje filtr. Moduly IoT Edge jsou zabalené jako image kompatibilní s Dockerem, které můžete uložit v úložišti kontejnerů. Rozhodnete se použít Azure Container Registry (ACR) k uložení nového modulu. ACR také použijete k sestavení kontejneru ze zdrojového projektu.

Spuštěním následujících příkazů přidejte registr kontejneru do skupiny prostředků v Azure:

REGISTRY_NAME="edgecentral$RANDOM"
az acr create -n $REGISTRY_NAME -g <rgn>[sandbox resource group name]</rgn> --sku Standard --admin-enabled true
az acr credential show -n $REGISTRY_NAME
echo "Your registry name is: $REGISTRY_NAME"

Poznamenejte si název a password hodnoty registru, které použijete později v této lekci.

Vytvoření projektu služby Azure Functions

K implementaci funkce používáte jazyk C#. Spuštěním následujících příkazů nainstalujte šablonu projektu a pak vygenerujte kostru projektu:

dotnet new -i Microsoft.Azure.IoT.Edge.Function
dotnet new aziotedgefunction -n FilterFunction -r $REGISTRY_NAME.azurecr.io/filterfunction
cd FilterFunction
ls

Spuštěním následujícího příkazu nahraďte existující FilterFunction.cs implementací, která filtruje telemetrii teploty počítače:

curl -O https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/iotedge/FilterFunction.cs

Teď vytvořte image a nahrajte ji do registru kontejneru. Očekáváme, že spuštění tohoto příkazu bude trvat několik minut:

az acr build --registry $REGISTRY_NAME --image filterfunction:v1 -f Dockerfile.amd64 .

Image v registru můžete vypsat pomocí následujícího příkazu:

az acr repository list --name $REGISTRY_NAME

Aktualizace manifestu nasazení

Pokud chcete použít nový modul filtru na zařízení IoT Edge, aktualizujte manifest nasazení novou verzí.

Stáhněte si nový manifest nasazení a definici rozhraní do místního počítače tak, že kliknete pravým tlačítkem na následující odkazy a zvolíte Uložit jako:

Otevřete EnvironmentalSensorManifestFilter-1-4.json v textovém editoru a aktualizujte ho tak, aby používal modul filtru z registru kontejneru:

  1. Nahraďte tři instance <YOUR CONTAINER REGISTRY NAME> názvem vašeho registru kontejneru. Název vypadá takto edgecentral27912.
  2. Nahraďte <YOUR CONTAINER REGISTRY PASSWORD> heslem, které jste si poznamenali dříve v této lekci.
  3. Uložte změny.

Tato verze manifestu nasazení:

  • Přidá modul pomocí funkce Azure, kterou jste vytvořili:

    "filterfunction": {
      "version": "1.0",
      "type": "docker",
      "status": "running",
      "restartPolicy": "always",
      "settings": {
        "image": "<YOUR CONTAINER REGISTRY NAME>.azurecr.io/filterfunction:v1",
        "createOptions": ""
      }
    
  • Před odesláním filtrované telemetrie do aplikace IoT Central směruje výstup z modulu SimulatedTemperatureSensor do modulu filterfunction :

    "routes": {
        "FilterFunctionToIoTCentral": "FROM /messages/modules/filterfunction/outputs/* INTO $upstream",
        "sensorToFilterFunction": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/filterfunction/inputs/input1\")"
      },
    

Nahrání nového manifestu nasazení:

  1. V aplikaci IoT Central přejděte do manifestů Edge a vyberte manifest senzoru prostředí.

  2. Na stránce Přizpůsobit nahrajte nový soubor EnvironmentalSensorManifestFilter-1-4.json. Vyberte Další.

  3. Na stránce Revize a dokončení se zobrazí nový modul filterfunction . Zvolte Uložit.

  4. Přejděte na hraniční zařízení senzoru prostředí – zařízení store-001 ze stránky Zařízení a vyberte Moduly.

  5. Na stránce Moduly vyberte Spravovat manifest > Přiřadit hraniční manifest. Vyberte manifest senzoru prostředí.

  6. Seznam modulů teď obsahuje spuštěný modul filterfunction :

Screenshot that shows the FilterFunction module running on the IoT Edge device.

Aktualizace šablony zařízení tak, aby používala nový modul

Zařízení IoT Edge teď odesílá telemetrii prostřednictvím rozhraní filterfunction místo rozhraní telemetrie . Proto je potřeba aktualizovat šablonu a zobrazení zařízení:

  1. Na stránce Šablony zařízení přejděte na hraniční zařízenísenzoru prostředí.

  2. Vyberte Moduly a pak vyberte Importovat moduly z manifestu.

  3. V dialogovém okně Importovat moduly vyberte Senzor prostředí a pak vyberte Importovat.

Screenshot that shows the FilterFunction module added to the device template.

Nový modul teď odesílá telemetrii do IoT Central. Dále přidejte rozhraní do nového modulu filtru, který určuje telemetrii a aktualizuje graf:

  1. Vyberte Module FilterFunction a pak + Přidat zděděné rozhraní. Možná budete muset vybrat ... tuto možnost zobrazíte.
  2. Zvolte dlaždici Rozhraní importu. Vyberte soubor TelemetryInterfaceFilter.json, který jste si stáhli dříve.

Původní rozhraní telemetrie můžete odebrat, protože SimulatedTemperatureModule už neodesílá telemetrická data přímo do IoT Central. Výstup z tohoto modulu se směruje do modulu FilterFunction modulem runtime IoT Edge:

  1. V modulu SimulatedTemperatureSensor vyberte rozhraní telemetrie.
  2. Vyberte Odstranit a potvrďte operaci.

Upravte zobrazení telemetrie zařízení IoT Edge, aby se zobrazila telemetrie odesílaná modulem FilterFunction:

  1. V šabloně zařízení vyberte zobrazení telemetrie zařízení IoT Edge a pak na dlaždici grafu vyberte možnost Upravit .
  2. Přidejte hodnoty telemetrie okolní/teploty, vlhkosti, počítače/teploty a tlaku.
  3. Vyberte Aktualizovat a pak uložte provedené změny.
  4. Výběrem možnosti Publikovat publikujte novou verzi šablony zařízení.

Kontrola práce

Zobrazení filtrované telemetrie ze zařízení IoT Edge:

  1. Na stránce Zařízení přejděte na zařízení store-001.

  2. Vyberte zobrazení telemetrie zařízení IoT Edge.

  3. Filtrovaná telemetrie se zobrazí v grafu. Nejsou zobrazeny žádné hodnoty s průměrnou okolní teplotou nižší než 21,0 stupňů.

    Screenshot that shows telemetry plot with no average ambient temperature values less than 21.

Pokud se zdá, že zařízení přestane odesílat telemetrii, bude pravděpodobně příčinou zastavení modulu SimulatedTemperatureSensor po odeslání 500 zpráv. Pokud virtuální počítač restartujete, počet se resetuje a znovu se spustí tok telemetrie:

az vm restart --resource-group <rgn>[sandbox resource group name]</rgn> \
  --name $(az vm list --resource-group <rgn>[sandbox resource group name]</rgn> --query [0].name -o tsv)