Použití sady Visual Studio 2022 k vývoji a ladění modulů pro Azure IoT Edge
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
V tomto článku se dozvíte, jak pomocí sady 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#. Podporované architektury zařízení jsou 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 vývojové nástroje IoT Edge.
- Upřednostňovaným nástrojem pro vývoj je rozhraní příkazového řádku (CLI).
- Nástroje Azure IoT Edge pro rozšíření sady Visual Studio Rozšíření je v režimu údržby.
Pomocí tlačítka selektoru nástrojů na začátku zvolte možnost nástroje pro tento článek. Oba nástroje poskytují následující výhody:
- Na místním vývojovém počítači můžete vytvářet, upravovat, sestavovat, spouštět a ladit řešení a moduly IoT Edge.
- Kódujte moduly Azure IoT v jazyce C nebo C# s výhodami vývoje sady Visual Studio.
- Nasaďte řešení IoT Edge do zařízení IoT Edge přes Azure IoT Hub.
Požadavky
Tento článek předpokládá, že jako vývojový počítač používáte počítač s Windows.
Nainstalujte nebo upravte sadu Visual Studio 2022 na vývojovém počítači. Zvolte možnosti vývoje a desktopových aplikací Azure s využitím možností úloh C++.
Stáhněte a nainstalujte nástroje Azure IoT Edge z webu Visual Studio Marketplace. K vytvoření a sestavení řešení IoT Edge můžete použít rozšíření Azure IoT Edge Tools. Upřednostňovaným vývojovým nástrojem je nástroj příkazového řádku (CLI) Azure IoT Edge Dev Tool. Součástí rozšíření jsou šablony projektů Azure IoT Edge použité k vytvoření projektu sady Visual Studio. V současné době potřebujete nainstalované rozšíření bez ohledu na nástroj pro vývoj, který používáte.
Důležité
Rozšíření Azure IoT Edge Tools for VS 2022 je v režimu údržby. Upřednostňovaným vývojovým nástrojem je nástroj příkazového řádku (CLI) Azure IoT Edge Dev Tool.
Tip
Pokud používáte Visual Studio 2019, stáhněte a nainstalujte nástroje Azure IoT Edge pro VS 2019 z marketplace sady Visual Studio.
Instalace správce knihovny Vcpkg
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat
Instalace balíčku azure-iot-sdk-c pro Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate install
Stá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 Linuxu, použijte počítač s Windows, který splňuje požadavky na Docker Desktop.
Vytvořte službu Azure Container Registry nebo Docker Hub pro ukládání imagí modulů.
Tip
Místo cloudového registru můžete použít místní registr Dockeru pro účely prototypu a testování.
Nainstalujte rozhraní příkazového řádku Azure CLI.
K otestování modulu na zařízení potřebujete aktivní IoT Hub s alespoň jedním zařízením IoT Edge. Pokud chcete vytvořit zařízení IoT Edge pro testování, můžete ho vytvořit na webu Azure Portal nebo pomocí rozhraní příkazového řádku:
Vytvoření na webu Azure Portal je nejrychlejší. Na webu Azure Portal přejděte k prostředku ioT Hubu. V nabídce Správa zařízení vyberte Zařízení a pak vyberte Přidat zařízení.
V části Vytvořit zařízení pojmenujte zařízení pomocí ID zařízení, zaškrtněte políčko Zařízení IoT Edge a pak v levém dolním rohu vyberte Uložit .
Nakonec v nabídce Zařízení pro správu > zařízení ověřte, že vaše nové zařízení ve službě IoT Hub existuje. Další informace o vytvoření zařízení IoT Edge prostřednictvím webu Azure Portal najdete v tématu Vytvoření a zřízení zařízení IoT Edge v Linuxu pomocí symetrických klíčů.
Pokud chcete vytvořit zařízení IoT Edge pomocí rozhraní příkazového řádku, postupujte podle kroků v rychlém startu pro Linux nebo Windows. V procesu registrace zařízení IoT Edge vytvoříte zařízení IoT Edge.
Pokud na vývojovém počítači spouštíte proces démon IoT Edge, možná budete muset před zahájením vývoje v sadě Visual Studio zastavit EdgeHub a EdgeAgent.
Vytvoření projektu Azure IoT Edge
Šablona projektu IoT Edge v sadě Visual Studio vytvoří řešení pro nasazení do zařízení IoT Edge. Nejprve vytvoříte řešení Azure IoT Edge. Pak v řešení vytvoříte modul. Každé řešení IoT Edge může obsahovat více než jeden modul.
Upozorňující
V rozšíření Nástroje Azure IoT Edge pro Visual Studio chybí šablony projektů pro moduly jazyka C a C#. Pracujeme na vyřešení tohoto problému. Pokud nemůžete vytvořit moduly IoT Edge 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 šablon sady 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. V dalším kroku přidáte dva další moduly IoT Edge.
Důležité
Struktura projektu IoT Edge vytvořená sadou Visual Studio není stejná jako struktura projektu v editoru Visual Studio Code.
Azure IoT Edge Dev Tool CLI v současné době nepodporuje vytváření typu projektu sady Visual Studio. K vytvoření projektu sady Visual Studio potřebujete použít rozšíření Visual Studio IoT Edge.
V sadě Visual Studio vytvořte nový projekt.
V části Vytvořit nový projekt vyhledejte Azure IoT Edge. Vyberte projekt, který odpovídá platformě a architektuře vašeho zařízení IoT Edge, a vyberte Další.
V části Konfigurace nového projektu zadejte název projektu, zadejte umístění a 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 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í vašeho 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ázvový> modul.
Výběrem možnosti Přidat přidáte modul do projektu.
Poznámka:
Pokud máte existující projekt IoT Edge, můžete změnit adresu URL úložiště tak, že otevřete soubor module.json . Adresa URL úložiště se nachází ve vlastnosti úložiště souboru JSON.
Teď máte v řešení sady Visual Studio projekt IoT Edge a modul IoT Edge.
Struktura projektu
Ve vašem řešení jsou dvě složky na úrovni projektu, včetně hlavní složky projektu a jedné složky 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 nebo Program.cs
main.c
v závislosti na jazyce, který jste zvolili. Tato složka obsahuje také soubor s názvem module.json
, který popisuje metadata vašeho modulu. Různé soubory Dockeru, které jsou zde zahrnuty, poskytují informace potřebné k sestavení modulu jako kontejneru Windows nebo Linuxu.
Manifest nasazení projektu
Manifest nasazení, který upravíte, má název deployment.debug.template.json
. Tento soubor je šablona manifestu nasazení IoT Edge, který definuje všechny moduly, které běží na zařízení, spolu s tím, jak spolu komunikují. Další informace o manifestech nasazení najdete v tématu Informace o nasazení modulů a vytváření tras.
Pokud otevřete tuto šablonu nasazení, uvidíte, že jsou zahrnuty dva moduly modulu runtime EdgeAgent a edgeHub spolu s vlastním modulem, který jste vytvořili v tomto projektu sady Visual Studio. Součástí je také čtvrtý modul s názvem SimulatedTemperatureSensor . Tento výchozí modul vygeneruje simulovaná data, která můžete použít k otestování modulů nebo odstranění, pokud to není nutné. Pokud chcete zjistit, jak simulovaný senzor teploty funguje, podívejte se na zdrojový kód SimulatedTemperatureSensor.csproj.
Nastavení verze modulu runtime IoT Edge
Nejnovější stabilní verze modulu runtime je v současné době 1.5. Verzi modulu runtime IoT Edge byste měli aktualizovat na nejnovější stabilní verzi nebo verzi, na kterou chcete cílit na vaše zařízení.
V Průzkumník řešení klikněte pravým tlačítkem na název hlavního projektu a vyberte Nastavit verzi modulu runtime IoT Edge.
V rozevírací nabídce zvolte verzi modulu runtime, na které běží vaše zařízení IoT Edge, a pak výběrem ok uložte změny. Pokud nedošlo k žádné změně, vyberte Zrušit a ukončete ji.
Rozšíření v současné době neobsahuje výběr nejnovějších verzí modulu runtime. Pokud chcete nastavit verzi modulu runtime vyšší než 1.2, otevřete soubor manifestu nasazení deployment.debug.template.json . Změňte verzi modulu runtime modulu system runtime image edgeAgent a edgeHub. Pokud například chcete 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 Vygenerovat nasazení pro IoT Edge. Tím se vygeneruje manifest nasazení na základě šablony nasazení a zobrazí se v konfigurační složce projektu sady Visual Studio.
Otevřete soubor manifestu nasazení deployment.debug.template.json. Manifest nasazení je dokument JSON, který popisuje moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge.
Změňte verzi modulu runtime modulu system runtime image edgeAgent a edgeHub. Pokud například chcete 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 byla směrována do vašeho modulu, který přijímá vstup a pak je odesílá do IoT Hubu.
Až budete připraveni přizpůsobit šablonu modulu vlastním kódem, použijte sady SDK služby 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
Azure IoT EdgeHub Dev Tool poskytuje místní vývojové a ladicí prostředí. Tento 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 nástroji Azure IoT EdgeHub Dev Tool.
Inicializace nástroje v sadě Visual Studio:
Načtěte připojovací řetězec vašeho zařízení IoT Edge (nachází se ve službě IoT Hub) z webu Azure Portal nebo z Azure CLI.
Pokud k načtení připojovací řetězec použijete 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 Nástroje v sadě Visual Studio vyberte Azure IoT Edge Tools>Setup IoT Edge Simulator.
Vložte připojovací řetězec a vyberte OK.
Poznámka:
Tyto kroky musíte provést jenom jednou ve vývojovém počítači, protože výsledky se automaticky použijí pro všechna následná řešení Azure IoT Edge. Tento postup je možné provést znovu, pokud potřebujete změnit jiný připojovací řetězec.
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 odesílat zprávy přes port 53000.
V Průzkumník řešení vyberte a zvýrazněte složku projektu modulu (například IotEdgeModule1). Nastavte vlastní modul jako spouštěný projekt. V nabídce vyberte Project>Set as StartUp Project (Spustit projekt).
Stisknutím klávesy F5 nebo výběrem tlačítka pro spuštění panelu nástrojů 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 konzolové aplikace .NET Core.
Nastavte zarážku pro kontrolu 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í jednoho modulu simulátor naslouchá na výchozím portu 53000 zpráv. 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/messages
Pokud se v adrese URL zobrazí chyba bez chybějící složené složené závorky nebo závorky, 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/messages
Zarážka by se měla aktivovat. Proměnné můžete sledovat v okně Místní prostředí sady Visual Studio a zjistit, kdy je ladicí program spuštěný. Přejděte na Ladicí>místní prostředí Systému Windows.>
V prostředí Bash nebo prostředí by se mělo zobrazit
{"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íhohubu 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 Průzkumník řešení přidejte do řešení druhý modul tak, že kliknete pravým tlačítkem myši na hlavní složku projektu. V nabídce vyberte Přidat>nový modul IoT Edge.
Add module
V okně zadejte název nového modulu a nahraďtelocalhost:5000
část adresy URL úložiště přihlašovacím serverem služby 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íluEdgeHub
trasy se také přidala nová trasa pro odesílání zpráv z nového modulu do IoT Hubu. 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 zarážku pro kontrolu 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 v každém modulu zarážky a stisknutím klávesy F5 spusťte a ladit více modulů současně. Měli byste vidět několik 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 nabízení imagí do registru
Po vývoji a ladění modulu můžete sestavit a odeslat image modulu do služby Azure Container Registry. Pak můžete modul nasadit do zařízení IoT Edge.
Nastavte hlavní projekt IoT Edge jako počáteční projekt, ne jeden z jednotlivých modulů.
Jako konfiguraci pro sestavení imagí modulů vyberte ladění nebo vydání.
Poznámka:
Při výběru možnosti Ladit sada Visual Studio používá
Dockerfile.(amd64|windows-amd64).debug
k sestavení imagí Dockeru. To zahrnuje ladicí program příkazového řádku .NET Core VSDBG v imagi kontejneru při jeho vytváření. Pro moduly IoT Edge připravené pro produkční prostředí doporučujeme použít konfiguraci vydané verze , která se používáDockerfile.(amd64|windows-amd64)
bez VSDBG.Pokud používáte privátní registr, jako je Azure Container Registry (ACR), přihlaste se k němu pomocí následujícího příkazu Dockeru. Uživatelské jméno a heslo můžete získat na stránce Přístupové klíče vašeho registru na webu Azure Portal.
docker login <ACR login server>
Pojďme přidat přihlašovací údaje služby Azure Container Registry do nastavení modulu runtime nalezeného v souboru
deployment.debug.template.json
. Můžete to provést dvěma způsoby. Přihlašovací údaje registru můžete buď přidat do.env
souboru (nejbezpečnější), nebo je přidat přímo do souborudeployment.debug.template.json
.Přidejte do
.env
souboru přihlašovací údaje:V Průzkumník řešení vyberte tlačítko Zobrazit všechny soubory na panelu nástrojů. Zobrazí se
.env
soubor. Přidejte do.env
souboru uživatelské jméno a heslo služby Azure Container Registry. Tyto přihlašovací údaje najdete na stránce Přístupové klíče služby Azure Container Registry na webu Azure Portal.DEFAULT_RT_IMAGE=1.2 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 byste raději přidali 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 instanční objekty. Další informace najdete v tématu Správa přístupu k registru kontejneru.
Pokud používáte místní registr, můžete spustit místní registr.
Nakonec v Průzkumník řešení klikněte pravým tlačítkem na hlavní složku projektu a vyberte Sestavit a odeslat moduly IoT Edge, aby se sestavil a nasdílel image Dockeru pro každý modul. Může to trvat minutu. Až se zobrazí
Finished Build and Push IoT Edge Modules.
v konzole Výstup v sadě Visual Studio, máte hotovo.
Nasazení řešení
Teď, když jste vytvořili a nasdíleli image modulů do služby Azure Container Registry, můžete řešení nasadit do zařízení IoT Edge. Už máte šablonu manifestu nasazení, kterou jste v průběhu tohoto kurzu pozorovali. Vygenerujme z toho manifest nasazení a pak pomocí příkazu Azure CLI nasadíte moduly do zařízení IoT Edge v Azure.
Klikněte pravým tlačítkem na hlavní projekt v sadě Visual Studio Průzkumník řešení a zvolte Generovat nasazení pro IoT Edge.
Přejděte do místní složky hlavního projektu sady Visual Studio a vyhledejte ji
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
.Zkontrolujte soubor a ověřte
deployment.amd64.debug.json
, že je verze schématuedgeHub
nastavená 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 } } }
Tip
Šablona nasazení pro Visual Studio 2022 vyžaduje verzi schématu 1.2. Pokud ho potřebujete mít 1.1 nebo 1.0, počkejte, až se vygeneruje nasazení (neměňte ho).
deployment.debug.template.json
Při generování nasazení se ve výchozím nastavení vytvoří schéma 1.2. Před nasazením do Azure ale můžete ručně změnitdeployment.amd64.debug.json
vygenerovaný manifest.Důležité
Po nasazení zařízení IoT Edge se v současné době na webu Azure Portal s verzí 1.2 schématu nezobrazí správně (verze 1.1 bude v pořádku). Jedná se o známou chybu, která bude brzy opravena. To ale nebude mít vliv na vaše zařízení, protože je stále připojený ve službě IoT Hub a dá se s ním kdykoli komunikovat pomocí Azure CLI.
Teď nasadíme manifest pomocí příkazu Azure CLI. Otevřete příkazový řádek pro vývojáře sady Visual Studio a přejděte do konfiguračního adresáře.
cd config
Nasaďte manifest pro zařízení IoT Edge do IoT Hubu. 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 hodnotu
[device id]
a[hub name]
[file path]
nahraďte hodnotami. Pokud ID zařízení IoT Edge v IoT Hubu 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.json
Po spuštění příkazu se v
JSON
příkazovém řádku zobrazí potvrzení nasazení.
Image Dockeru pro sestavení modulu
Po vytvoření modulu můžete sestavit image modulu, která se uloží do registru kontejneru pro nasazení do zařízení IoT Edge.
Pomocí souboru Dockerfile modulu sestavte image Dockeru modulu.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Předpokládejme například, že příkazové prostředí je v adresáři projektu a název vašeho modulu je IotEdgeModule1. Pokud chcete vytvořit image místního registru nebo registru kontejneru Azure, použijte následující příkazy:
# 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"
Image Dockeru modulu push
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 zařízení IoT Edge.
V sadě Visual Studio otevřete v hlavním projektu soubor manifestu nasazení deployment.debug.template.json. Manifest nasazení je dokument JSON, který popisuje moduly, které se mají nakonfigurovat na cílovém zařízení IoT Edge. Před nasazením musíte aktualizovat přihlašovací údaje služby Azure Container Registry, image modulů a správné createOptions
hodnoty. Další informace o hodnotách createOption najdete v tématu Konfigurace možností vytváření kontejnerů pro moduly IoT Edge.
Pokud k uložení image modulu používáte Službu Azure Container Registry, musíte do nastavení edgeAgent přidat přihlašovací údaje k deployment.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-amd64
pro 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ém a vlastní modul v šabloně nasazení.
Například image IotEdgeModule1 a nastavení createOptions 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\"}]}}}" }
K nasazení modulů do Azure IoT Hubu použijte příkaz set-modules Pro IoT Edge. Pokud chcete například nasadit moduly definované v souboru deployment.debug.amd64.json do ioT Hubu my-iot-hub pro zařízení IoT Edge my-device, použijte 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>"
Tip
Svůj připojovací řetězec IoT Hub najdete na webu Azure Portal v části Zásady sdíleného přístupu nastavení>zabezpečení služby Azure IoT Hub.>
Potvrďte nasazení do vašeho zařízení.
Pokud chcete zkontrolovat, jestli se moduly IoT Edge 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.2
edgeHub running Up a minute mcr.microsoft.com/azureiotedge-hub:1.2
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í sady Visual Studio.
Vzdálené připojení k Dockeru vyžaduje oprávnění kořenové úrovně. Pokud chcete povolit připojení k démonu Dockeru na vzdáleném zařízení, postupujte podle kroků v části Správa Dockeru jako uživatel , který není root. Po dokončení ladění můžete chtít odebrat uživatele ze skupiny Dockeru.
Postupujte podle kroků pro připojení k procesu spuštěném v kontejneru Dockeru na vzdáleném zařízení pomocí sady Visual Studio.
V sadě 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, seznamte se se sadami SDK služby Azure IoT Hub a využijte je.
Pokud chcete monitorovat zprávy typu zařízení-cloud (D2C) pro konkrétní zařízení IoT Edge, projděte si kurz: Monitorování zařízení IoT Edge a začněte tím.