Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Použitelné pro:
IoT Edge 1.5
Důležité
IoT Edge 1.5 LTS je podporovaná verze. IoT Edge 1,4 LTS dosáhl konce životnosti 12. listopadu 2024. Pokud používáte starší verzi, přečtěte si téma Update IoT Edge.
V tomto článku se dozvíte, jak pomocí Visual Studio 2022 vyvíjet, ladit a nasazovat vlastní moduly Azure IoT Edge. Visual Studio 2022 poskytuje šablony pro moduly IoT Edge napsané v jazyce C a C#. Mezi podporované architektury zařízení patří Windows x64, Linux x64, ARM32 a ARM64 (Preview). Další informace o podporovaných operačních systémech, jazycích a architekturách najdete v tématu Podpora jazyka a architektury.
Tento článek obsahuje kroky pro dva IoT Edge vývojové nástroje:
- Rozhraní příkazového řádku (CLI), upřednostňovaný nástroj pro vývoj
- nástroje Azure IoT Edge pro rozšíření Visual Studio (v režimu maintenance)
Pomocí tlačítka selektoru nástrojů na začátku zvolte možnost nástroje pro tento článek. Oba nástroje poskytují tyto výhody:
- Na místním vývojovém počítači můžete vytvářet, upravovat, sestavovat, spouštět a ladit IoT Edge řešení a moduly.
- Naprogramujte moduly Azure IoT v jazyce C nebo C# s výhodami Visual Studio vývoje.
- Nasaďte řešení IoT Edge do IoT Edge zařízení prostřednictvím Azure IoT Hub.
Požadavky
Tento článek předpokládá, že jako vývojový počítač používáte počítač, na kterém běží Windows.
Nainstalujte nebo upravte Visual Studio 2022 na vývojovém počítači. Zvolte vývoj pro Azure a vývoj Desktop s možnostmi úloh C++.
Stáhněte a nainstalujte nástroje Azure IoT Edge z Visual Studio Marketplace. K vytvoření a sestavení řešení IoT Edge použijte rozšíření Azure IoT Edge Tools. Upřednostňovaným vývojovým nástrojem je příkazový řádek (CLI) Azure IoT Edge Dev Tool. Součástí rozšíření jsou šablony Azure IoT Edge projektů použité k vytvoření Visual Studio projektu. Rozšíření budete potřebovat nainstalované bez ohledu na vámi používané vývojové nástroje.
Důležité
Rozšíření Azure IoT Edge Tools for VS 2022 je v režimu maintenance. Upřednostňovaným vývojovým nástrojem je příkazový řádek (CLI) Azure IoT Edge Dev Tool.
Návod
Pokud používáte Visual Studio 2019, stáhněte a nainstalujte Azure IoT Edge Tools for VS 2019 z Visual Studio marketplace.
Instalace správce knihovny Vcpkg
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.batNainstalujte balíček azure-iot-sdk-c pro Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate installStáhněte a nainstalujte do vývojového počítače systém pro správu kontejnerů kompatibilní s Dockerem a sestavte a spusťte image modulů. Nainstalujte například Docker Community Edition.
Pokud chcete vyvíjet moduly s kontejnery Linux, použijte počítač Windows, který splňuje požadavky requirements for Docker Desktop.
Vytvořte Azure Container Registry nebo Docker Hub pro ukládání imagí modulů.
Návod
Místo cloudového registru použijte místní registr Dockeru pro vytváření prototypů a testování.
Nainstalujte Azure CLI.
K otestování modulu na zařízení potřebujete aktivní IoT Hub s alespoň jedním IoT Edge zařízením. Pokud chcete vytvořit IoT Edge zařízení pro testování, vytvořte ho na portálu Azure nebo pomocí rozhraní příkazového řádku:
Nejrychlejší způsob je vytvoření na portálu Azure. Na portálu Azure přejděte ke svému prostředku IoT Hub. V nabídce Správa zařízení vyberte Zařízení a pak vyberte Přidat zařízení.
V Vytvoření zařízení pojmenujte své zařízení pomocí Device ID, zkontrolujte IoT Edge Zařízení a pak v levém dolním rohu vyberte Save.
V nabídce Device management > Devices ověřte, že v IoT Hub existuje vaše nové zařízení. Další informace o vytvoření zařízení IoT Edge prostřednictvím portálu Azure najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.
Pokud chcete vytvořit IoT Edge zařízení pomocí rozhraní příkazového řádku, postupujte podle pokynů v rychlém startu pro Linux nebo Windows. V procesu registrace IoT Edge zařízení vytvoříte IoT Edge zařízení.
Pokud na vývojovém počítači provozujete démon IoT Edge, možná budete muset před zahájením vývoje ve Visual Studiu zastavit EdgeHub a EdgeAgent.
Vytvoření projektu Azure IoT Edge
Šablona projektu IoT Edge v Visual Studio vytvoří řešení pro nasazení do IoT Edge zařízení. Nejprve vytvoříte Azure IoT Edge řešení. Pak v řešení vytvoříte modul. Každé IoT Edge řešení může obsahovat více než jeden modul.
Upozornění
V Azure IoT Edge nástrojích pro rozšíření Visual Studio chybí šablony projektů pro moduly jazyka C a C#. Pokud nemůžete vytvořit IoT Edge moduly pomocí rozšíření, použijte následující alternativní řešení.
Stáhněte si následující soubory a umístěte je do uvedeného adresáře šablony Visual Studio:
| Soubor šablony | Přidat do adresáře |
|---|---|
| azureiotedgemodule-v0.0.4.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C# |
| azureiotedgevcmodulevs17-v0.0.9.zip | %userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates\Visual C++ Project |
V našem řešení vytvoříme tři projekty. Hlavní modul, který obsahuje EdgeAgent a EdgeHub, kromě modulu senzoru teploty. Dále přidáte další dva moduly IoT Edge.
Důležité
Struktura projektu IoT Edge, kterou Visual Studio vytvoří, není stejná jako struktura projektu v Visual Studio Code.
Rozhraní příkazového řádku Azure IoT Edge Dev Tool v současné době nepodporuje vytváření typu projektu Visual Studio. Pomocí rozšíření Visual Studio IoT Edge vytvořte projekt Visual Studio.
V Visual Studio vytvořte nový projekt.
V Vytvoření nového projektu vyhledejte Azure IoT Edge. Vyberte projekt, který odpovídá platformě a architektuře vašeho zařízení IoT Edge, a pak vyberte Dalši.
V části Konfigurace nového projektu zadejte název projektu, zadejte umístění a pak vyberte Vytvořit.
V části Přidat modul vyberte typ modulu, který chcete vyvíjet. Pokud máte existující modul, který chcete přidat do nasazení, vyberte Existující modul.
Do pole Název modulu zadejte název modulu. Zvolte název, který je v registru kontejneru jedinečný.
V adrese URL úložiště zadejte název úložiště imagí modulu. Visual Studio automaticky vyplní název modulu jako localhost:5000/<název vašeho modulu>. Nahraďte ho vlastními informacemi registru. Pokud k testování použijete místní registr Dockeru, použijte localhost . Pokud používáte Azure Container Registry, použijte přihlašovací server z nastavení registru. Přihlašovací server vypadá jako <název registru>.azurecr.io. Nahraďte pouze část řetězce localhost:5000, aby konečný výsledek vypadal jako <název registru>.azurecr.io/<název vašeho modulu>.
Vyberte Přidat a přidejte modul do projektu.
Poznámka:
Pokud chcete změnit adresu URL úložiště v existujícím projektu IoT Edge, otevřete soubor module.json. Adresa URL úložiště je ve vlastnosti úložiště souboru JSON.
V řešení Visual Studio teď máte projekt IoT Edge a modul IoT Edge.
Struktura projektu
Vaše řešení má dvě složky na úrovni projektu: hlavní složku projektu a jednu složku modulu. Můžete mít například hlavní složku projektu s názvem AzureIotEdgeApp1 a složku modulu s názvem IotEdgeModule1. Hlavní složka projektu obsahuje manifest nasazení.
Složka projektu modulu obsahuje soubor pro kód modulu s názvem buď Program.cs nebo main.c, v závislosti na jazyce, který zvolíte. Tato složka má také soubor s názvem module.json , který popisuje metadata vašeho modulu. Různé soubory Dockeru zde poskytují informace potřebné k sestavení modulu jako kontejneru Windows nebo Linuxu.
Manifest nasazení projektu
Upravte manifest nasazení s názvem deployment.debug.template.json. Tento soubor je šablona manifestu nasazení IoT Edge, který definuje všechny moduly, které běží na zařízení a jak spolu komunikují. Další informace o manifestech nasazení najdete v tématu Informace o nasazení modulů a vytváření tras.
Když otevřete tuto šablonu nasazení, uvidíte, že jsou zahrnuté dva moduly modulu runtime, edgeAgent a edgeHub, a také vlastní modul, který jste vytvořili v tomto projektu Visual Studio. Součástí je také čtvrtý modul s názvem SimulatedTemperatureSensor . Tento výchozí modul generuje simulovaná data, která můžete použít k otestování modulů nebo odstranění, pokud není potřeba. Informace o fungování simulovaného senzoru teploty najdete ve zdrojovém kódu SimulatedTemperatureSensor.csproj.
Nastavení verze modulu runtime IoT Edge
Nejnovější stabilní verze modulu runtime je 1.5. Aktualizujte běhové prostředí IoT Edge na nejnovější stabilní verzi nebo verzi, kterou chcete použít pro zařízení.
V Solution Explorer klikněte pravým tlačítkem myši na název hlavního projektu a pak vyberte Nastavit verzi runtime IoT Edge.
V rozevírací nabídce vyberte verzi modulu runtime, na které běží vaše zařízení IoT Edge, a potom vyberte OK uložte provedené změny. Pokud nedošlo k žádné změně, vyberte Zrušit a ukončete ji.
Rozšíření neobsahuje výběr pro nejnovější verze modulu runtime. Pokud chcete nastavit verzi modulu runtime na vyšší než 1.2, otevřete deployment.debug.template.json soubor manifestu nasazení. Změňte verzi runtime systému pro image modulu edgeAgent a edgeHub. Pokud chcete například použít modul runtime IoT Edge verze 1.5, změňte v souboru manifestu nasazení následující řádky:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...Pokud jste změnili verzi, znovu vygenerujte manifest nasazení tak, že kliknete pravým tlačítkem na název projektu a vyberete Generate deployment for IoT Edge. Tím se vygeneruje manifest nasazení na základě šablony nasazení a umístí ho do složky config projektu Visual Studio.
Otevřete soubor manifestu nasazení deployment.debug.template.json . Manifest deployment je dokument JSON popisující moduly pro konfiguraci na cílovém zařízení IoT Edge.
Změňte verzi runtime systému pro image modulu edgeAgent a edgeHub. Pokud chcete například použít modul runtime IoT Edge verze 1.5, změňte v souboru manifestu nasazení následující řádky:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Možnosti infrastruktury modulů a vývoje
Když přidáte nový modul, obsahuje výchozí kód, který je připravený k sestavení a nasazení do zařízení, abyste mohli začít testovat bez zásahu do jakéhokoli kódu. Kód modulu se nachází ve složce modulu v souboru s názvem Program.cs (pro C#) nebo main.c (pro C).
Výchozí řešení je vytvořené tak, aby simulovaná data z modulu SimulatedTemperatureSensor se směrovala do vašeho modulu, který přebírá vstup a pak je odesílá do IoT Hub.
Až budete připraveni přizpůsobit šablonu modulu vlastním kódem, použijte sady SDK Azure IoT Hub k vytváření modulů, které řeší klíčové potřeby řešení IoT, jako je zabezpečení, správa zařízení a spolehlivost.
Ladění pomocí simulátoru
Nástroj pro vývoj Azure IoT EdgeHub poskytuje místní prostředí pro vývoj a ladění. Nástroj pomáhá spouštět moduly IoT Edge bez modulu runtime IoT Edge, abyste mohli vytvářet, vyvíjet, testovat, spouštět a ladit moduly a řešení IoT Edge místně. Image nemusíte odesílat do registru kontejneru a nasazovat je do zařízení pro účely testování.
Další informace najdete v tématu Azure IoT EdgeHub Dev Tool.
Inicializace nástroje v Visual Studio:
Načtěte připojovací řetězec vašeho zařízení IoT Edge (které najdete ve vašem IoT Hubu) z portálu Azure nebo z Azure CLI.
Pokud k načtení connection string používáte rozhraní příkazového řádku, použijte tento příkaz a nahraďte "[device_id]" a "[hub_name]" vlastními hodnotami:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]V nabídce Tools v Visual Studio vyberte Azure IoT Edge Tools>Setup IoT Edge Simulator.
Vložte connection string a vyberte OK.
Poznámka:
Tyto kroky musíte provést pouze jednou ve vývojovém počítači, protože výsledky se automaticky použijí pro všechna následná Azure IoT Edge řešení. Tento postup můžete provést znovu, pokud potřebujete změnit jiný connection string.
Sestavení a ladění jednoho modulu
Obvykle chcete testovat a ladit každý modul před spuštěním v rámci celého řešení s více moduly. Nástroj simulátoru IoT Edge umožňuje spustit jeden modul izolovaně a posílat zprávy přes port 53000.
V Solution Explorer vyberte a zvýrazněte složku projektu modulu (například IotEdgeModule1). Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Projekt> Nastavit jako startovací projekt.
Stiskněte F5 nebo vyberte tlačítko pro spuštění panelu nástrojů a spusťte simulátor IoT Edge pro jeden modul. Počáteční doba může trvat 10 až 20 sekund.
Pokud se modul úspěšně inicializoval, měl by se zobrazit okno konzoly .NET Core.
Nastavte bod přerušení pro zkoumání modulu.
- Při vývoji v jazyce C# nastavte zarážku ve
PipeMessage()funkci v ModuleBackgroundService.cs. - Pokud používáte jazyk C, nastavte zarážku ve
InputQueue1Callback()funkci v main.c.
- Při vývoji v jazyce C# nastavte zarážku ve
Otestujte modul odesláním zprávy. Při ladění jediného modulu naslouchá simulátor na výchozím portu 53000 pro zprávy. Pokud chcete odeslat zprávu do modulu, spusťte následující příkaz curl z příkazového prostředí, jako je Git Bash nebo WSL Bash.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesPokud se zobrazí chyba neodpovídající zavírací složená závorka/závorka v adrese URL, zkuste místo toho použít následující příkaz:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\": \"hello world\"}" http://localhost:53000/api/v1/messagesZarážka by se měla aktivovat. Proměnné můžete sledovat v okně Visual Studio Locals nalezené při spuštění ladicího programu. Přejděte na Debug>Windows>Locals.
V Bash nebo shellu byste měli vidět
{"message":"accepted"}potvrzení.V konzole .NET byste měli vidět:
IoT Hub module client initialized. Received message: 1, Body: [hello world]Pokud chcete zastavit ladění, stiskněte Ctrl+F5 nebo stiskněte tlačítko zastavit.
Sestavení a ladění více modulů
Po dokončení vývoje jednoho modulu můžete chtít spustit a ladit celé řešení s více moduly. Nástroj simulátoru IoT Edge umožňuje spouštět všechny moduly definované v manifestu nasazení, včetně simulovaného hraničního uzlu pro směrování zpráv. V tomto příkladu spustíte dva vlastní moduly a modul simulovaného senzoru teploty. Zprávy z modulu simulovaného senzoru teploty se směrují do každého vlastního modulu.
V Solution Explorer přidejte do řešení druhý modul kliknutím pravým tlačítkem myši na hlavní složku projektu. V nabídce vyberte Add>New IoT Edge Module.
V okně
Add modulezadejte název nového modulu a nahraďte část adresy URL úložištělocalhost:5000přihlašovacím serverem Azure Container Registry, jako jste to udělali dříve.Otevřete soubor
deployment.debug.template.json, abyste viděli, že nový modul byl přidán v části moduly . Do oddílu routes vEdgeHubbyla přidána nová trasa pro odesílání zpráv z nového modulu do IoT Hub. Pokud chcete odesílat data ze simulovaného senzoru teploty do nového modulu, přidejte další trasu s následujícím řádkemJSON. Nahraďte<NewModuleName>(na dvou místech) vlastním názvem modulu."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"Klikněte pravým tlačítkem na hlavní projekt (například AzureIotEdgeApp1) a vyberte Nastavit jako počáteční projekt. Nastavením hlavního projektu jako spouštěcího projektu se spustí všechny moduly v řešení. To zahrnuje oba moduly, které jste přidali do řešení, modul simulovaného senzoru teploty a simulované centrum Edge.
Stisknutím klávesy F5 nebo výběrem tlačítka pro spuštění panelu nástrojů spusťte řešení. Zpočátku může trvat 10 až 20 sekund. Ujistěte se, že nemáte spuštěné další kontejnery Dockeru, které by mohly svázat port, který pro tento projekt potřebujete.
Pro každý modul by se měla zobrazit dvě okna konzolové aplikace .NET Core.
Nastavte bod přerušení pro zkoumání modulů.
- Při vývoji v jazyce C# nastavte zarážku ve
PipeMessage()funkci v ModuleBackgroundService.cs. - Pokud používáte jazyk C, nastavte zarážku ve
InputQueue1Callback()funkci v main.c.
- Při vývoji v jazyce C# nastavte zarážku ve
Vytvořte body přerušení v každém modulu a stisknutím klávesy F5 spusťte a laďte více modulů současně. Měli byste vidět více oken konzolové aplikace .NET Core, přičemž každé okno představuje jiný modul.
Pokud chcete zastavit ladění, stiskněte Ctrl+F5 nebo stiskněte tlačítko zastavit.
Vytváření a odesílání obrazů do registru
Po vývoji a ladění modulu sestavte a nasdílejte image modulu do Azure Container Registry. Pak modul nasaďte do IoT Edge zařízení.
Nastavte hlavní IoT Edge projekt jako počáteční projekt, ne jeden z jednotlivých modulů.
Vyberte buď ladění nebo vydání jako konfiguraci pro sestavení obrazů modulů.
Poznámka:
Když zvolíte Debug, Visual Studio k vytváření imagí Dockeru používá
Dockerfile.(amd64|windows-amd64).debug. To zahrnuje ladicí program příkazového řádku platformy .NET Core VSDBG ve vašem obrazu kontejneru. Pro produkční moduly IoT Edge použijte konfiguraci Release, která používáDockerfile.(amd64|windows-amd64)bez VSDBG.Pokud používáte privátní registr, jako je Azure Container Registry (ACR), přihlaste se pomocí následujícího příkazu Dockeru. Získejte uživatelské jméno a heslo ze stránky Přístupové klíče registru na portálu Azure.
docker login <ACR login server>Do nastavení modulu runtime v souboru
deployment.debug.template.jsonpřidejte přihlašovací údaje Azure Container Registry. Přihlašovací údaje registru můžete přidat do.envsouboru (nejbezpečnější) nebo je přidat přímo do souborudeployment.debug.template.json.Přidejte do
.envsouboru přihlašovací údaje:V Solution Explorer vyberte tlačítko panelu nástrojů Show Všechny soubory. Zobrazí se
.envsoubor. Do souboru.envpřidejte své uživatelské jméno a heslo Azure Container Registry. Tyto přihlašovací údaje najdete na stránce Access Keys vašeho Azure Container Registry na portálu Azure.
DEFAULT_RT_IMAGE=1.5 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>Přímé přidání přihlašovacích údajů do deployment.debug.template.json
Pokud chcete přidat přihlašovací údaje přímo do šablony nasazení, nahraďte zástupné symboly uživatelským jménem správce ACR, heslem a názvem registru.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Poznámka:
Tento článek používá přihlašovací údaje správce pro Azure Container Registry, které jsou vhodné pro scénáře vývoje a testování. Až budete připraveni na produkční scénáře, doporučujeme použít možnost ověřování s nejnižšími oprávněními, jako jsou služební identity. Další informace najdete v tématu Správa přístupu k registru kontejneru.
Pokud používáte místní registr, spusťte místní registr.
Nakonec v Solution Explorer klikněte pravým tlačítkem na hlavní složku projektu a vyberte Build a Push IoT Edge Modules a sestavte a nasdílejte image Dockeru pro každý modul. Může to trvat minutu. Až se ve výstupní konzole Visual Studio zobrazí
Finished Build and Push IoT Edge Modules., máte hotovo.
Nasazení řešení
Teď, když jste vytvořili a nasdíleli image modulů do Azure Container Registry, nasaďte řešení do IoT Edge zařízení. V tomto kurzu už máte šablonu manifestu nasazení. Vygenerujte z něj manifest nasazení a pak pomocí příkazu Azure CLI nasaďte moduly do zařízení IoT Edge v Azure.
Klikněte pravým tlačítkem na hlavní projekt v Visual Studio Solution Explorer a zvolte Generate Deployment for IoT Edge.
Přejděte do místní složky hlavního projektu Visual Studio a vyhledejte složku
config. Cesta k souboru může vypadat takto:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Tady najdete vygenerovaný manifest nasazení, napříkladdeployment.amd64.debug.json.Otevřete váš
deployment.amd64.debug.jsonsoubor a ověřte, že verze schématuedgeHubje nastavena na 1.2."$edgeHub": { "properties.desired": { "schemaVersion": "1.2", "routes": { "IotEdgeModule2022ToIoTHub": "FROM /messages/modules/IotEdgeModule2022/outputs/* INTO $upstream", "sensorToIotEdgeModule2022": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/IotEdgeModule2022/inputs/input1\")", "IotEdgeModule2022bToIoTHub": "FROM /messages/modules/IotEdgeModule2022b/outputs/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } }Návod
Šablona nasazení pro Visual Studio 2022 vyžaduje verzi schématu 1.2. Pokud je potřebujete mít 1.1 nebo 1.0, počkejte, až se vygeneruje nasazení (neměňte je v
deployment.debug.template.json). Generování nasazení ve výchozím nastavení vytvoří schéma 1.2. Před nasazením do Azure ale můžete ručně změnit vygenerovaný manifestdeployment.amd64.debug.json.Důležité
Po nasazení zařízení IoT Edge se v současné době na portálu Azure s schématem verze 1.2 nezobrazí správně (verze 1.1 je v pořádku). To ale nebude mít vliv na vaše zařízení, protože je stále připojený v IoT Hub a můžete s ním kdykoli komunikovat pomocí Azure CLI.
Teď nasadíme manifest pomocí příkazu Azure CLI. Otevřete příkazový řádek Visual Studio Developer a přejděte do adresáře config.
cd configNasaďte manifest pro zařízení IoT Edge do IoT Hub. Příkaz nakonfiguruje zařízení tak, aby používalo moduly vyvinuté ve vašem řešení. Manifest nasazení byl vytvořen v předchozím kroku a uložen ve složce konfigurace . Z konfigurační složky spusťte následující příkaz nasazení. Nahraďte
[device id],[hub name]a[file path]svými hodnotami. Pokud id zařízení IoT Edge v IoT Hub neexistuje, musí se vytvořit.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]Váš příkaz může vypadat například takto:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.jsonPo spuštění příkazu se v příkazovém řádku zobrazí potvrzení nasazení vytištěného ve formátu JSON.
Image Dockeru pro sestavení modulu
Po vývoji modulu sestavte image modulu, která se uloží do registru kontejneru pro nasazení do IoT Edge zařízení.
Pomocí souboru Dockerfile modulu sestavte image Dockeru modulu.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Pokud je například vaše příkazové prostředí v adresáři projektu a název vašeho modulu je IotEdgeModule1, pomocí následujících příkazů sestavte image místního registru nebo registru kontejneru Azure:
# Build the image for the local registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
# Or build the image for an Azure Container Registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
Odeslat obrázek Dockeru modulu
Nasdílejte image modulu do místního registru nebo do registru kontejneru.
docker push <ImageName>
Příklad:
# Push the Docker image to the local registry
docker push localhost:5000/iotedgemodule1:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
Nasaďte modul do IoT Edge zařízení.
V Visual Studio otevřete v hlavním projektu soubor manifestu nasazení deployment.debug.template.json. Manifest deployment je dokument JSON popisující moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge. Před nasazením je potřeba aktualizovat přihlašovací údaje Azure Container Registry, image modulů a správné hodnoty createOptions. Další informace o hodnotách createOption najdete v tématu Jak konfigurovat možnosti vytvoření kontejneru pro moduly IoT Edge.
Pokud k uložení image modulu používáte Azure Container Registry, musíte do nastavení
edgeAgent přidat své přihlašovací údaje v souborudeployment.debug.template.json . Příklad:"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_acr_password>", "address": "myacr.azurecr.io" } } } }, //...Hodnotu vlastnosti image nahraďte názvem image modulu, který jste odeslali do registru. Pokud jste například odeslali image označenou
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64pro vlastní modul IotEdgeModule1, nahraďte hodnotu vlastnosti image hodnotou značky.Přidejte nebo nahraďte hodnotu createOptions řetězcovým obsahem pro každý systémový a vlastní modul v šabloně nasazení.
Například nastavení image a createOptions modulu IotEdgeModule1 by se podobaly následujícímu:
"IotEdgeModule1": { "version": "1.0.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }
Pomocí příkazu IoT Edge Azure CLI set-modules nasaďte moduly do Azure IoT Hub. Pokud chcete například nasadit moduly definované v souboru deployment.debug.amd64.json do IoT Hub my-iot-hub pro IoT Edge zařízení my-device, spusťte následující příkaz:
az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"
Návod
Najděte svůj IoT Hub connection string na portálu Azure v části Azure IoT Hub >Nastavení zabezpečení>Sdílené zásady přístupu.
Potvrďte nasazení do vašeho zařízení.
Pokud chcete zkontrolovat, jestli se vaše IoT Edge moduly nasadily do Azure, přihlaste se k zařízení (nebo virtuálnímu počítači), například přes SSH nebo Azure Bastion, a spusťte příkaz IoT Edge list.
iotedge list
Měl by se zobrazit seznam modulů spuštěných na vašem zařízení nebo virtuálním počítači.
NAME STATUS DESCRIPTION CONFIG
SimulatedTemperatureSensor running Up a minute mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0
edgeAgent running Up a minute mcr.microsoft.com/azureiotedge-agent:1.5
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.5
IotEdgeModule1 running Up a minute myacr.azurecr.io/iotedgemodule1:0.0.1-amd64.debug
myIotEdgeModule2 running Up a minute myacr.azurecr.io/myiotedgemodule2:0.0.1-amd64.debug
Ladění pomocí vzdáleného SSH Dockeru
Moduly Docker a Moby podporují připojení SSH ke kontejnerům, které umožňují připojit a ladit kód na vzdáleném zařízení pomocí Visual Studio.
Vzdálené připojení k Dockeru vyžaduje oprávnění kořenové úrovně. Postupujte podle kroků v části Správa Dockeru jako uživatel bez root oprávnění, abyste mohli povolit připojení k démonu Dockeru na vzdáleném zařízení. Po dokončení ladění můžete chtít uživatele odebrat ze skupiny Dockeru.
Postupujte podle pokynů pro Visual Studio k připojení k procesu, který běží v kontejneru Dockeru na vašem vzdáleném zařízení.
V Visual Studio nastavte zarážky ve vlastním modulu.
Po dosažení zarážky můžete zkontrolovat proměnné, procházet kód a ladit modul.
Další kroky
Pokud chcete vyvíjet vlastní moduly pro zařízení IoT Edge, porozumět a používat SDK Azure IoT Hub.
Pokud chcete monitorovat zprávy typu zařízení-cloud (D2C) pro konkrétní IoT Edge zařízení, projděte si Tutorial: Monitorování zařízení IoT Edge a začněte.