Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőre vonatkozik:
IoT Edge 1.5
Fontos
IoT Edge 1.5 LTS a támogatott kiadás. IoT Edge 1,4 LTS 2024. november 12-én véget ért. Ha korábbi kiadást használ, tekintse meg a Update IoT Edge című témakört.
Ez a cikk bemutatja, hogyan használhatja a Visual Studio 2022-et egyéni Azure IoT Edge modulok fejlesztésére, hibakeresésére és üzembe helyezésére. Visual Studio 2022 sablonokat biztosít IoT Edge C és C# nyelven írt modulokhoz. A támogatott eszközarchitektúrák közé tartozik az Windows x64, Linux x64, ARM32 és ARM64 (előzetes verzió). A támogatott operációs rendszerekről, nyelvekről és architektúrákról további információt a Nyelv és az architektúra támogatása című témakörben talál.
Ez a cikk két IoT Edge fejlesztési eszköz lépéseit tartalmazza:
- Parancssori felület (CLI), a fejlesztés előnyben részesített eszköze
- Azure IoT Edge eszközök a Visual Studio számára bővítmény (maintenance módban)
A cikk eszközbeállításának kiválasztásához használja az elején található eszközválasztó gombot. Mindkét eszköz az alábbi előnyöket nyújtja:
- A helyi fejlesztői számítógépen IoT Edge megoldások és modulok létrehozása, szerkesztése, létrehozása, futtatása és hibakeresése.
- A Azure IoT modulok kódolása C vagy C# nyelven a Visual Studio fejlesztés előnyeivel.
- Helyezze üzembe IoT Edge megoldását egy IoT Edge eszközön Azure IoT Hub keresztül.
Előfeltételek
Ez a cikk feltételezi, hogy fejlesztőgépként Windows futó gépet használ.
Telepítse vagy módosítsa a Visual Studio 2022 fejlesztői gépén. Válassza az Azure fejlesztés és a Desktop fejlesztés C++-szal munkaterhelési opciókat.
Töltse le és telepítse Azure IoT Edge Tools a Visual Studio Marketplace-ről. A IoT Edge-megoldás létrehozásához és létrehozásához használja a Azure IoT Edge Tools bővítményt. Az előnyben részesített fejlesztési eszköz a parancssori Azure IoT Edge fejlesztői eszköz. A bővítmény tartalmazza a Visual Studio projekt létrehozásához használt Azure IoT Edge projektsablonokat. A bővítményt a használt fejlesztési eszköztől függetlenül telepítenie kell.
Fontos
A Azure IoT Edge Tools for VS 2022 bővítmény karbantartási módban van. Az előnyben részesített fejlesztési eszköz a parancssori Azure IoT Edge fejlesztői eszköz.
Tipp.
Ha 2019-Visual Studio használ, töltse le és telepítse a Azure IoT Edge Eszközök VS 2019-hez a Visual Studio piactérről.
A Vcpkg-kódtár-kezelő telepítése
git clone https://github.com/Microsoft/vcpkg cd vcpkg bootstrap-vcpkg.batTelepítse a azure-iot-sdk-c csomagot Windows
vcpkg.exe install azure-iot-sdk-c:x64-windows vcpkg.exe --triplet x64-windows integrate installTöltse le és telepítsen egy Docker-kompatibilis tárolókezelő rendszert a fejlesztőgépre a modulrendszerképek létrehozásához és futtatásához. Telepítse például a Docker Community Editiont.
Ha Linux-tárolókkal szeretne modulokat fejleszteni, használjon egy Windows számítógépet, amely megfelel a Docker Desktop megjelenítéseinek.
Hozzon létre egy Azure Container Registry vagy Docker Hub a modulképek tárolásához.
Tipp.
Használjon helyi Docker-beállításjegyzéket a felhőregisztrációs adatbázis helyett a prototípus-készítéshez és teszteléshez.
Telepítse a Azure CLI.
Ha egy eszközön szeretné tesztelni a modult, aktív IoT Hub kell legalább egy IoT Edge eszközzel. Ha IoT Edge eszközt szeretne létrehozni teszteléshez, hozzon létre egyet a Azure portálon vagy a parancssori felülettel:
A leggyorsabban a Azure portálon hozhat létre egyet. A Azure portálon nyissa meg a IoT Hub erőforrást. Válassza az Eszközök lehetőséget az Eszközkezelés menüben, majd válassza az Eszköz hozzáadása lehetőséget.
Az Eszköz létrehozása területen nevezze el az eszközt az Eszközazonosító használatával, jelölje be az IoT Edge eszköz opciót, majd a bal alsó sarokban válassza a Mentés lehetőséget.
Győződjön meg arról, hogy az új eszköz megtalálható a IoT Hub a Device felügyeleti > Eszközök menüből. Az Azure portálon keresztüli IoT Edge eszköz létrehozásáról további információt a A IoT Edge eszköz létrehozása és üzembe helyezése Linuxon szimmetrikus kulcsokkal.
Ha IoT Edge eszközt szeretne létrehozni a parancssori felülettel, kövesse a Linux vagy Windows rövid útmutató lépéseit. Egy IoT Edge-eszköz regisztrálása során létre kell hoznia egy IoT Edge eszközt.
Ha a IoT Edge démont futtatja a fejlesztői gépen, előfordulhat, hogy le kell állítania az EdgeHubot és az EdgeAgentet, mielőtt elkezdené a fejlesztést Visual Studio.
Azure IoT Edge projekt létrehozása
A Visual Studio IoT Edge projektsablonja létrehoz egy megoldást az IoT Edge eszközökre való üzembe helyezéshez. Először létre kell hoznia egy Azure IoT Edge megoldást. Ezután létrehoz egy modult ebben a megoldásban. Minden IoT Edge megoldás több modult is tartalmazhat.
Figyelmeztetés
A Visual Studio bővítmény Azure IoT Edge eszközei hiányoznak a C és C# modulok projektsablonjaiból. Ha nem tud IoT Edge modulokat létrehozni a bővítmény használatával, használja az alábbi kerülő megoldást.
Töltse le a következő fájlokat, és helyezze őket a felsorolt Visual Studio sablonkönyvtárba:
| Sablonfájl | Hozzáadás a címtárhoz |
|---|---|
| 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 |
A megoldásban három projektet fogunk felépíteni. A fő modul, amely az EdgeAgentet és az EdgeHubot tartalmazza a hőmérséklet-érzékelő modul mellett. Ezután további két IoT Edge modult vehet fel.
Fontos
A Visual Studio által létrehozott IoT Edge projektstruktúra nem ugyanaz, mint a Visual Studio Code.
A Azure IoT Edge fejlesztői eszköz parancssori felülete jelenleg nem támogatja a Visual Studio projekttípus létrehozását. A Visual Studio projekt létrehozásához használja a Visual Studio IoT Edge bővítményt.
A Visual Studio-ban hozzon létre egy új projektet.
A Új projekt létrehozása területen keresse meg a Azure IoT Edge. Válassza ki a IoT Edge eszköz platformjának és architektúrájának megfelelő projektet, majd válassza a Next lehetőséget.
Az új projekt konfigurálásához adja meg a projekt nevét, adja meg a helyet, majd válassza a Létrehozás lehetőséget.
A Modul hozzáadása területen válassza ki a fejleszteni kívánt modul típusát. Ha van egy meglévő modulja, amelyet hozzá szeretne adni az üzembe helyezéshez, válassza a Meglévő modul lehetőséget.
A Modul neve mezőben adja meg a modul nevét. Válasszon egy egyedi nevet a tárolóregisztrációs adatbázisban.
Az adattár URL-címében adja meg a modul képtárának nevét. Visual Studio automatikusan kitölti a modul nevét a localhost:5000/<a modul nevével>. Cserélje le a saját beállításjegyzék adatokra. Ha helyi Docker-beállításjegyzéket használ a teszteléshez, használja a localhostot . Ha Azure Container Registryt használ, használja a bejelentkezési kiszolgálót a registry beállításai alatt. A bejelentkezési kiszolgáló neve a következő: <registry name>.azurecr.io. Csak a localhost:5000 sztringrészt cserélje le úgy, hogy a végeredmény úgy nézzen ki, mint <a regisztrációs név>.azurecr.io/<a modul neve>.
Válassza a Hozzáadás lehetőséget a modul projekthez való hozzáadásához.
Megjegyzés
Ha módosítani szeretné az adattár URL-címét egy meglévő IoT Edge projektben, nyissa meg a module.json fájlt. Az adattár URL-címe a JSON-fájl adattártulajdonságában található.
Most már rendelkezik egy IoT Edge projektel és egy IoT Edge modullal a Visual Studio megoldásban.
Projektstruktúra
A megoldás két projektszintű mappával rendelkezik: egy fő projektmappával és egy modulmappával. Előfordulhat például, hogy rendelkezik egy AzureIotEdgeApp1 nevű fő projektmappával és egy IotEdgeModule1 nevű modulmappával. A fő projektmappa tartalmazza az üzembehelyezési jegyzékfájlt.
A modulprojekt mappájában van egy fájl a modul kódjához, amelynek neve attól függően, hogy melyik nyelvet választja, Program.cs vagy main.c lehet. Ez a mappa egy olyan fájllal module.json is rendelkezik, amely leírja a modul metaadatait. Itt különböző Docker-fájlok biztosítják a modul Windows vagy Linux-tárolóként való létrehozásához szükséges információkat.
A projekt telepítési jegyzéke
Szerkessze az deployment.debug.template.json nevű üzembehelyezési jegyzékfájlt. Ez a fájl egy IoT Edge üzembehelyezési jegyzék sablonja, amely meghatározza az eszközön futó összes modult, valamint azt, hogy hogyan kommunikálnak egymással. Az üzembehelyezési jegyzékekkel kapcsolatos további információkért lásd: Modulok üzembe helyezése és útvonalak létrehozása.
Az üzembehelyezési sablon megnyitásakor láthatja, hogy a két futtatókörnyezeti modul, a edgeAgent és a edgeHub, valamint az ebben a Visual Studio projektben létrehozott egyéni modul is megtalálható. A modul egy negyedik, SimulatedTemperatureSensor nevű modult is tartalmaz. Ez az alapértelmezett modul szimulált adatokat hoz létre, amelyekkel tesztelheti a modulokat, vagy törölheti, ha nincs rá szükség. A szimulált hőmérséklet-érzékelő működésének megismeréséhez tekintse meg a SimulatedTemperatureSensor.csproj forráskódot.
IoT Edge futtatókörnyezet verziójának beállítása
A legújabb stabil futtatókörnyezeti verzió az 1.5. Frissítse a IoT Edge futtatókörnyezeti verziót a legújabb stabil kiadásra vagy az eszközök számára megcélzni kívánt verzióra.
A Solution Explorer kattintson a jobb gombbal a fő projekt nevére, majd válassza a Set IoT Edge futtatókörnyezeti verzió lehetőséget.
A legördülő menüben válassza ki a IoT Edge-eszközök által futtatott futtatókörnyezeti verziót, majd a módosítások mentéséhez válassza a OK lehetőséget. Ha nem történt módosítás, a Kilépéshez válassza a Mégse lehetőséget.
A bővítmény nem tartalmaz kijelölést a legújabb futtatókörnyezeti verziókhoz. A futtatókörnyezet 1.2-nél magasabb verziójának beállításához nyissa meg a deployment.debug.template.json üzembehelyezési jegyzékfájlt. Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti moduljának lemezképeinek edgeAgent és edgeHub esetében. Ha például IoT Edge futtatókörnyezet 1.5-ös verzióját szeretné használni, módosítsa a következő sorokat az üzembehelyezési jegyzékfájlban:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...Ha módosította a verziót, kattintson jobb egérgombbal a projekt nevére, majd válassza az IoT Edge számára az üzembe helyezés generálása lehetőséget. Ez létrehoz egy üzembehelyezési jegyzékfájlt az üzembehelyezési sablon alapján, és a Visual Studio projekt config mappájába helyezi.
Nyissa meg a deployment.debug.template.json üzembehelyezési jegyzékfájlt. A deployment jegyzék egy JSON-dokumentum, amely leírja a célzott IoT Edge eszközön konfigurálni kívánt modulokat.
Módosítsa a futtatókörnyezet verzióját a rendszer futtatókörnyezeti moduljának lemezképeinek edgeAgent és edgeHub esetében. Ha például IoT Edge futtatókörnyezet 1.5-ös verzióját szeretné használni, módosítsa a következő sorokat az üzembehelyezési jegyzékfájlban:
"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Modulinfrastruktúra és fejlesztési lehetőségek
Amikor új modult ad hozzá, az alapértelmezett kóddal rendelkezik, amely készen áll az eszközre való üzembe helyezésre, így kód érintése nélkül is megkezdheti a tesztelést. A modul kódja a modul mappájában található egy (C#) vagy Program.cs (C esetén) nevű main.c fájlban.
Az alapértelmezett megoldás úgy van létrehozva, hogy a szimulált adatok a SimulatedTemperatureSensor modulból a modulhoz lesznek irányítva, amely felveszi a bemenetet, majd elküldi IoT Hub.
Ha készen áll a modulsablon saját kóddal történő testreszabására, a Azure IoT Hub SDK-k használatával olyan modulokat hozhat létre, amelyek kielégítik az IoT-megoldások alapvető igényeit, például a biztonságot, az eszközkezelést és a megbízhatóságot.
Hibakeresés a szimulátor használatával
A Azure IoT EdgeHub Fejlesztői eszköz helyi fejlesztési és hibakeresési élményt nyújt. Az eszköz segít IoT Edge modulok elindításában a IoT Edge futtatókörnyezet nélkül, így helyileg hozhat létre, fejleszthet, tesztelhet, futtathat és hibakeresést végezhet IoT Edge modulok és megoldások között. Nem kell feltöltenie a képeket egy konténer-regisztrációs adatbázisba, és telepíteni őket egy eszközre tesztelés céljából.
További információ: Azure IoT EdgeHub Fejlesztői eszköz.
A Visual Studio-ban inicializálja az eszközt:
Kérje le az IoT Edge eszköz csatlakozási karakterláncát (amely az IoT Hubban található) a Azure portálról, vagy az Azure CLI-ből.
Ha a parancssori felület használatával kéri le a connection string, használja ezt a parancsot, és cserélje le a "[device_id]" és a "[hub_name]" értéket a saját értékeire:
az iot hub device-identity connection-string show --device-id [device_id] --hub-name [hub_name]A Visual Studio Tools menüjében válassza a Azure IoT Edge Tools>Setup IoT Edge Simulator lehetőséget.
Illessze be a connection string, és válassza a OK lehetőséget.
Megjegyzés
Ezeket a lépéseket csak egyszer kell végrehajtania a fejlesztői számítógépen, mivel az eredményeket automatikusan alkalmazza a rendszer az összes további Azure IoT Edge megoldásra. Ez az eljárás ismét követhető, ha másik kapcsolati sztringre kell váltania.
Egyetlen modul létrehozása és hibakeresése
Általában minden modult tesztelni és hibakeresést végezni szükséges, mielőtt azt egy teljes, több modult tartalmazó megoldásban futtatja. A IoT Edge szimulátor eszköz lehetővé teszi egyetlen modul külön-külön történő futtatását egy üzenetküldéshez az 53000-s porton keresztül.
A Solution Explorer területen jelölje ki és jelölje ki a modul projektmappáját (például IotEdgeModule1). Állítsa be az egyéni modult indítási projektként. Válassza a Projekt>Beállítás kezdőprojektként lehetőséget a menüből.
Nyomja le a F5 vagy a futtatási eszköztár gombra kattintva indítsa el a IoT Edge szimulátort egyetlen modulhoz. Kezdetben 10–20 másodpercig is eltarthat.
Ha a modul inicializálása sikeresen megtörtént, megjelenik egy .NET Core-konzolalkalmazás ablaka.
Állítson be egy töréspontot a modul vizsgálatához.
- Ha C#-ban fejleszt, állítson be töréspontot a függvényben a
PipeMessage()ModuleBackgroundService.cs. - C használata esetén állítson be egy töréspontot a
InputQueue1Callback()main.c függvényben.
- Ha C#-ban fejleszt, állítson be töréspontot a függvényben a
Tesztelje a modult egy üzenet küldésével. Egyetlen modul hibakeresésekor a szimulátor az alapértelmezett 53000-s porton figyeli az üzeneteket. Ha üzenetet szeretne küldeni a modulnak, futtassa a következő curl parancsot egy parancshéjból, például a Git Bashből vagy a WSL Bashből.
curl --header "Content-Type: application/json" --request POST --data '{"inputName": "input1","data":"hello world"}' http://localhost:53000/api/v1/messagesHa az URL-címben nem egyező záró zárójel vagy záró szögletes zárójel hibát kapna, próbálkozzon inkább a következő paranccsal:
curl --header "Content-Type: application/json" --request POST --data "{\"inputName\": \"input1\", \"data\": \"hello world\"}" http://localhost:53000/api/v1/messagesA töréspontot aktiválni kell. A változókat a Visual Studio Locals ablakban tekintheti meg, amely a hibakereső futtatásakor található. Nyissa meg a Debug>Windows>Locals.
A Bash vagy shell felületén meg kell jelennie egy megerősítésnek
{"message":"accepted"}.A .NET konzolon a következőt kell látnia:
IoT Hub module client initialized. Received message: 1, Body: [hello world]A hibakeresés leállításához nyomja le a Ctrl + F5 billentyűkombinációt, vagy válassza a leállítás gombot.
Több modul létrehozása és hibakeresése
Miután befejezte egy modul fejlesztését, érdemes lehet egy teljes megoldást futtatni és hibakeresést végezni több modullal. A IoT Edge szimulátor eszköz lehetővé teszi az üzembe helyezési jegyzékben definiált összes modul futtatását, beleértve egy szimulált edgeHubot az üzenetek útválasztásához. Ebben a példában két egyéni modult és a szimulált hőmérséklet-érzékelő modult futtatja. A szimulált hőmérséklet-érzékelő modul üzenetei minden egyéni modulhoz lesznek irányítva.
A Solution Explorer-ben adjon hozzá egy második modult a megoldáshoz a jobb gombbal a fő projektmappára kattintva. A menüben válassza a Add>New IoT Edge Module lehetőséget.
A
Add moduleablakban adjon nevet az új modulnak, és cserélje le az adattár URL-címéneklocalhost:5000részét a Azure Container Registry bejelentkezési kiszolgálóra, ahogyan korábban is tette.Nyissa meg a fájlt
deployment.debug.template.json, és ellenőrizze, hogy az új modul bekerült-e a modulok szakaszba. A routesEdgeHubszakaszában egy új útvonal is hozzáadva, hogy üzeneteket küldjön az új modulból a IoT Hub. Ha adatokat szeretne küldeni a szimulált hőmérséklet-érzékelőről az új modulba, adjon hozzá egy másik útvonalat a következő sortalJSON. Cserélje le<NewModuleName>(két helyen) a saját modulnevét."sensorTo<NewModuleName>": "FROM /messages/modules/SimulatedTemperatureSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/<NewModuleName>/inputs/input1\")"Kattintson a jobb gombbal a fő projektre (például AzureIotEdgeApp1), és válassza a Set as StartUp Project (Indítási projekt) lehetőséget. Ha a fő projektet indítási projektként állítja be, a megoldás összes modulja fut. Ez magában foglalja a megoldáshoz hozzáadott mindkét modult, a szimulált hőmérséklet-érzékelő modult és a szimulált Edge-központot.
Nyomja le az F5 billentyűt, vagy válassza a futtatási eszköztár gombot a megoldás futtatásához. Kezdetben 10–20 másodpercig is eltarthat. Győződjön meg arról, hogy nincsenek olyan Docker-tárolók, amelyek köthetik a projekthez szükséges portot.
Minden modulhoz két .NET Core-konzolalkalmazás ablakának kell megjelennie.
Állítson be egy töréspontot a modulok vizsgálatához.
- Ha C#-ban fejleszt, állítson be töréspontot a függvényben a
PipeMessage()ModuleBackgroundService.cs. - C használata esetén állítson be egy töréspontot a
InputQueue1Callback()main.c függvényben.
- Ha C#-ban fejleszt, állítson be töréspontot a függvényben a
Hozzon létre töréspontokat az egyes modulokban, majd nyomja le az F5 billentyűt több modul egyidejű futtatásához és hibakereséséhez. Több .NET Core-konzolalkalmazás ablakának kell megjelennie, mindegyik ablak egy másik modult jelöl.
A hibakeresés leállításához nyomja le a Ctrl + F5 billentyűkombinációt, vagy válassza a leállítás gombot.
Rendszerképek létrehozása és leküldése a beállításjegyzékbe
A modul fejlesztése és hibakeresése után hozza létre és küldje a modul rendszerképét az Azure Container Registrybe. Ezután helyezze üzembe a modult a IoT Edge eszközén.
Állítsa be a fő IoT Edge projektet indítási projektként, nem pedig az egyes modulok egyikét.
Válassza a Hibakeresés vagy a Kiadás lehetőséget a modulképek összeállításához szükséges konfigurációként.
Megjegyzés
A Debug kiválasztásakor Visual Studio
Dockerfile.(amd64|windows-amd64).debughasználatával hoz létre Docker-rendszerképeket. Ez magában foglalja a .NET Core parancssori hibakereső VSDBG-t a konténerképedben. Gyártásra kész IoT Edge modulokhoz használja a Release konfigurációt, amely a VSDBG nélküliDockerfile.(amd64|windows-amd64)-t használja.Ha olyan privát beállításjegyzéket használ, mint a Azure Container Registry (ACR), a következő Docker-paranccsal jelentkezzen be. Kérje le a felhasználónevet és a jelszót a regisztrációs kulcsok oldalának Hozzáférési kulcsok részéről az Azure portálon.
docker login <ACR login server>Adja hozzá a Azure Container Registry bejelentkezési adatait a
deployment.debug.template.jsonfájl futtatókörnyezeti beállításaihoz. Hozzáadhatja a beállításjegyzék hitelesítő adatait a.envfájlhoz (a legbiztonságosabbhoz), vagy közvetlenül hozzáadhatja őket adeployment.debug.template.jsonfájlhoz.Hitelesítő adatok hozzáadása a
.envfájlhoz:A Solution Explorer területen válassza a Show All Files eszköztár gombot. Megjelenik a
.envfájl. Adja hozzá Azure Container Registry felhasználónevét és jelszavát a.envfájlhoz. Ezeket a hitelesítő adatokat a Azure Container Registry Access Keys lapján találja a Azure portálon.
DEFAULT_RT_IMAGE=1.5 CONTAINER_REGISTRY_USERNAME_myregistry=<my-registry-name> CONTAINER_REGISTRY_PASSWORD_myregistry=<my-registry-password>Adj hozzá hitelesítő adatokat közvetlenül a "deployment.debug.template.json" fájlhoz.
Ha közvetlenül az üzembehelyezési sablonhoz szeretné hozzáadni a hitelesítő adatait, cserélje le a helyőrzőket az ACR-rendszergazdai felhasználónévre, jelszóra és beállításjegyzék-névre.
"settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Megjegyzés
Ez a cikk rendszergazdai bejelentkezési hitelesítő adatokat használ a Azure Container Registry, amelyek fejlesztési és tesztelési forgatókönyvekhez kényelmesek. Ha készen áll az éles helyzetekre, javasoljuk a minimális jogosultságú hitelesítési lehetőséget, például a szolgáltatásnevek használatát. További információ: A tárolóregisztrációs adatbázishoz való hozzáférés kezelése.
Ha helyi beállításjegyzéket használ, futtasson egy helyi beállításjegyzéket.
Végül a Solution Explorer kattintson a jobb gombbal a fő projektmappára, és válassza a Build and Push IoT Edge Modules lehetőséget a Docker-rendszerkép összeállításához és leküldéséhez az egyes modulokhoz. Ez eltarthat egy percig. Ha a Visual Studio kimeneti konzolján
Finished Build and Push IoT Edge Modules.jelenik meg, akkor elkészült.
A megoldás üzembe helyezése
Most, hogy elkészítette és feltöltötte a modulképeket az Azure Container Registry-be, helyezze üzembe a megoldást az IoT Edge eszközén. Ebben az oktatóanyagban már rendelkezik telepítési manifest sablonnal. Hozzon létre egy üzembehelyezési jegyzékfájlt, majd egy Azure CLI paranccsal helyezze üzembe a modulokat IoT Edge eszközén Azure.
Kattintson a jobb gombbal a fő projektre Visual Studio Solution Explorer, és válassza a Generate Deployment for IoT Edge lehetőséget.
Nyissa meg a helyi Visual Studio fő projektmappáját, és keresse meg a
configmappát. A fájl elérési útja a következőhöz hasonló lehet:C:\Users\<YOUR-USER-NAME>\source\repos\<YOUR-IOT-EDGE-PROJECT-NAME>\config. Itt találja a létrehozott üzembehelyezési jegyzékfájlt, példáuldeployment.amd64.debug.json.Nyissa meg a
deployment.amd64.debug.jsonfájlt, és győződjön meg arról, hogy aedgeHubsémaverzió 1.2-esre van állítva."$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 } } }Tipp.
A 2022-es Visual Studio üzembehelyezési sablonhoz az 1.2-es sémaverzió szükséges. Ha 1.1-nek vagy 1.0-nak kell lennie, várjon, amíg az üzembe helyezés létrejön (ne módosítsa a fájlban
deployment.debug.template.json). Az üzembe helyezés létrehozása alapértelmezés szerint létrehoz egy 1.2-s sémát. Szükség esetén azonban manuálisan is módosíthatjadeployment.amd64.debug.json, a létrehozott jegyzékfájlt, mielőtt üzembe helyezené a Azure.Fontos
A IoT Edge eszköz üzembe helyezése után jelenleg nem jelenik meg megfelelően a Azure portálon az 1.2-es sémaverzióval (az 1.1-es verzió rendben van). Ez azonban nem érinti az eszközt, mivel továbbra is csatlakozik IoT Hub, és bármikor kommunikálhat a Azure CLI használatával.
Most helyezzük üzembe a jegyzékfájlt egy Azure CLI paranccsal. Nyissa meg a Visual Studio Developer parancssort és váltson a config könyvtárra.
cd configHelyezze üzembe az IoT Edge eszköz manifest fájlt az IoT Hubra. A parancs konfigurálja az eszközt a megoldásban kifejlesztett modulok használatára. Az üzembehelyezési jegyzék az előző lépésben lett létrehozva, és a konfigurációs mappában lett tárolva. A konfigurációs mappában hajtsa végre a következő üzembe helyezési parancsot. Cserélje le a
[device id],[hub name]és[file path]az értékeket. Ha a IoT Edge eszközazonosító nem létezik a IoT Hub, létre kell hozni.az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]A parancs például így nézhet ki:
az iot edge set-modules --device-id my-device-name --hub-name my-iot-hub-name --content deployment.amd64.debug.jsonA parancs futtatása után megjelenik a JSON-ban kinyomtatott üzembe helyezés megerősítése a parancssorban.
Docker-kép építési modul
A modul fejlesztése után készítse el a modul rendszerképét egy tárolóregisztrációs adatbázisban a IoT Edge eszközén való üzembe helyezéshez.
A modul Docker-rendszerképének létrehozásához használja a modul Docker-fájlját.
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Ha például a parancshéj a projektkönyvtárban található, és a modul neve IotEdgeModule1, a következő parancsokkal építse fel a képfájlt a helyi regisztrációs adatbázisba vagy egy Azure tárolóregisztrációs adatbázisba:
# 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"
Push modul Docker-képje
Küldje el a modul rendszerképét a helyi beállításjegyzékbe vagy egy tárolóregisztrációs adatbázisba.
docker push <ImageName>
Példa:
# 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
Telepítse a modult az IoT Edge eszközre.
Visual Studio-ban nyissa meg a fő projekt deployment.debug.template.json központi telepítési jegyzékfájlját. A deployment jegyzék egy JSON-dokumentum, amely leírja a célzott IoT Edge eszközön konfigurálni kívánt modulokat. Az üzembe helyezés előtt frissítenie kell a Azure Container Registry hitelesítő adatait, a modul lemezképeit és a megfelelő createOptions értékeket. A createOption-értékekkel kapcsolatos további információkért lásd: Az IoT Edge modulok tároló-létrehozási beállításainak konfigurálása.
Ha egy Azure Container Registry-t használ a modulkép tárolásához, a hitelesítő adatokat hozzá kell adnia a deployment.debug.template.json-ba a edgeAgent beállításaihoz. Például,
"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" } } } }, //...Cserélje le a kép tulajdonság értékét a regisztrárba feltöltött modulkép nevére. Ha például egy
myacr.azurecr.io/iotedgemodule1:0.0.1-amd64címkével ellátott képet töltött fel az IotEdgeModule1 egyedi modulhoz, cserélje le a képtulajdonság értékét a címkeértékre.Adja hozzá vagy cserélje le a createOptions értéket sztringezett tartalommal az üzembehelyezési sablon minden egyes rendszeréhez és egyéni moduljaihoz.
Az IotEdgeModule1 rendszerképe és a createOptions beállításai például az alábbihoz hasonlóak lehetnek:
"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\"}]}}}" }
A IoT Edge Azure CLI set-modules paranccsal helyezze üzembe a modulokat a Azure IoT Hub. Ha például az deployment.debug.amd64.json fájlban definiált modulokat szeretné telepíteni az IoT Hub my-iot-hub eszközére az IoT Edge eszközön my-device, futtassa a következő parancsot:
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>"
Tipp.
Keresse meg az IoT Hub kapcsolati karakterláncot az Azure portálon az Azure IoT Hub >Biztonsági beállítások>Megosztott hozzáférési házirendek területen.
Az eszköz üzembe helyezésének megerősítése
Annak ellenőrzéséhez, hogy a IoT Edge-modulok üzembe lettek-e helyezve Azure, jelentkezzen be az eszközére (vagy virtuális gépére), például SSH-val vagy Azure Bastion keresztül, és futtassa a IoT Edge listaparancsot.
iotedge list
Látnia kell az eszközön vagy a virtuális gépen futó modulok listáját.
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
Hibakeresés a Docker Távoli SSH használatával
A Docker és a Moby motorjai támogatják a tárolókhoz való SSH-kapcsolatokat, így kódot csatolhat és hibakeresést végezhet egy távoli eszközön Visual Studio használatával.
A Távolról a Dockerhez való csatlakozáshoz gyökérszintű jogosultságokra van szükség. A Docker nem gyökérfelhasználóként való kezelésének lépéseit követve engedélyezheti a kapcsolatot a Docker démonával a távoli eszközön. Ha végzett a hibakereséssel, érdemes lehet eltávolítania a felhasználót a Docker-csoportból.
Kövesse a Visual Studio utasításait a távoli eszközön futó Docker-tárolón egy folyamathoz való csatoláshoz.
A Visual Studio állítsa be a töréspontokat az egyéni modulban.
Töréspont elérésekor megvizsgálhatja a változókat, végiglépkedhet a kódon, és hibakeresést végezhet a modulban.
Következő lépések
Az IoT Edge-eszközök egyéni moduljainak fejlesztéséhez értsd meg és használd az Azure IoT Hub SDK-kat.
Ha egy adott IoT Edge eszközhöz szeretné monitorozni az eszközről a felhőbe irányuló (D2C) üzeneteket, tekintse át a Tutorial: IoT Edge eszközök monitorozása az első lépésekhez.