Cvičení – nasazení funkce Azure do IoT Edge
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 Azure 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 musí 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ů. Pomocí služby Azure Container Registry (ACR) uložíte nový modul a sestavíte kontejner 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 registru a password
hodnoty pro pozdější použití 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:
- Nahraďte tři instance
<YOUR CONTAINER REGISTRY NAME>
názvem vašeho registru kontejneru. Název vypadá taktoedgecentral27912
. - Nahraďte
<YOUR CONTAINER REGISTRY PASSWORD>
heslem, které jste si poznamenali dříve v této lekci. - 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 Azure 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í:
V aplikaci Azure IoT Central přejděte do manifestů Edge a vyberte manifest senzoru prostředí.
Na stránce Přizpůsobit nahrajte nový soubor EnvironmentalSensorManifestFilter-1-4.json. Vyberte Další.
Na stránce Revize a dokončení se zobrazí nový modul filterfunction . Zvolte Uložit.
Přejděte na hraniční zařízení senzoru prostředí – zařízení store-001 ze stránky Zařízení a vyberte Moduly.
V horní části stránky vyberte Spravovat manifest > Přiřadit hraniční manifest. Vyberte manifest senzoru prostředí a pak vyberte Přiřadit manifest.
Seznam modulů teď obsahuje spuštěný modul filterfunction :
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í.
Na stránce Šablony zařízení vyberte hraniční zařízení senzoru prostředí.
Vyberte Moduly a pak vyberte Importovat moduly z manifestu.
V dialogovém okně Importovat moduly vyberte Senzor prostředí a pak vyberte Importovat.
Nový modul teď odesílá telemetrii do Azure IoT Central. Dále přidejte rozhraní do nového modulu filtru, který určuje telemetrii a aktualizuje graf.
- Vyberte Module FilterFunction a pak + Přidat zděděné rozhraní. Možná budete muset vybrat tři tečky (...), aby se tato možnost zobrazila.
- 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 Azure IoT Central. Výstup z tohoto modulu se směruje do modulu FilterFunction modulem runtime IoT Edge.
- V modulu SimulatedTemperatureSensor vyberte rozhraní telemetrie.
- Vyberte Odstranit a potvrďte operaci.
Upravte zobrazení telemetrie zařízení IoT Edge tak, aby se zobrazila telemetrie odesílaná modulem FilterFunction.
- V šabloně zařízení vyberte zobrazení telemetrie zařízení IoT Edge a pak na dlaždici grafu vyberte možnost Upravit .
- Přidejte hodnoty telemetrie okolní/teploty, vlhkosti, počítače/teploty a tlaku.
- Vyberte Aktualizovat a pak Uložit.
- Výběrem možnosti Publikovat publikujte novou verzi šablony zařízení.
Kontrola práce
Zobrazení filtrované telemetrie ze zařízení IoT Edge:
Na stránce Zařízení vyberte zařízení store-001.
Vyberte zobrazení telemetrie zařízení IoT Edge.
Filtrovaná telemetrie se zobrazí v grafu. Nejsou zobrazeny žádné hodnoty s průměrnou okolní teplotou nižší než 21,0 stupňů.
Pokud se zdá, že zařízení přestane odesílat telemetrii, je pravděpodobné, že modul SimulatedTemperatureSensor se zastaví 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)