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.
A Azure Functions használatával telepíthet olyan kódot, amely közvetlenül az Azure IoT Edge-eszközökön futtatja az üzleti logikát. Ez az oktatóanyag bemutatja, hogyan hozhat létre és helyezhet üzembe egy Azure függvényt, amely egy szimulált IoT Edge eszköz érzékelőadatait szűri. Használja a kezdő lépések során létrehozott szimulált IoT Edge eszközt. Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Azure függvény létrehozása a Visual Studio Code használatával
- Docker-rendszerkép létrehozása és közzététele tárolóregisztrációs adatbázisban a Visual Studio Code és a Docker használatával
- A modul üzembe helyezése a tárolóregisztrációs adatbázisból a IoT Edge eszközre
- Szűrt adatok megtekintése
Az oktatóanyagban létrehozott Azure függvény szűri az eszköz által létrehozott hőmérsékleti adatokat. A függvény csak akkor küld felfelé üzeneteket az Azure IoT Hub felé, ha a hőmérséklet meghaladja a megadott küszöbértéket.
Ha nincs Azure fiókja, a kezdés előtt hozzon létre egy felszabadító fiókot.
Előfeltételek
Az oktatóanyag megkezdése előtt kövesse az oktatóanyagot a Linux-tárolók fejlesztéséhez szükséges fejlesztői környezet beállításához: Develop Azure IoT Edge modulokat Visual Studio Code használatával. Ha végzett, a következő előfeltételek teljesülnek:
- Egy ingyenes vagy standard szintű IoT Hub az Azure-ban.
- Linux-tárolókkal Azure IoT Edge futtató AMD64-eszköz. A rövid útmutatóval beállíthat egy Linux-eszközt vagy Windows eszközt.
- Tárolóregisztrációs adatbázis, például Azure Container Registry.
- Visual Studio Code a Azure IoT Edge és Azure IoT Hub bővítményekkel van beállítva. A Visual Studio Code Azure IoT Edge eszközei bővítmény karbantartási módban van.
- Töltsön le és telepítsen egy Docker-kompatibilis tárolókezelő rendszert a fejlesztőgépre. Állítsa be Linux-tárolók futtatására.
Ha Azure Functions IoT Edge modult szeretne fejleszteni, telepítse a következő további előfeltételeket a fejlesztőgépre:
Függvényprojekt létrehozása
A Visual Studio Code Azure IoT Edge felügyeleti képességeket és kódsablonokat biztosít. Ebben a szakaszban Visual Studio Code használatával hozhat létre IoT Edge megoldást egy Azure függvénnyel.
Új projekt létrehozása
Kövesse az alábbi lépéseket egy testreszabható C# függvénymegoldássablon létrehozásához.
Nyissa meg a Visual Studio Code a fejlesztői gépen.
Nyissa meg a Visual Studio Code parancskatalógust a View > parancskatalógus kiválasztásával.
A parancskatalógusban adja hozzá és futtassa a következő parancsot: Azure IoT Edge: Új IoT Edge megoldás. A megoldás létrehozásához kövesse az alábbi utasításokat a parancskatalógusban:
- Válasszon ki egy mappát: válassza ki a fejlesztési gépen a Visual Studio Code helyét a megoldásfájlok létrehozásához.
- Adjon meg egy megoldásnevet: adjon hozzá egy leíró nevet a megoldáshoz, például a FunctionSolution nevet, vagy fogadja el az alapértelmezett értéket.
- Válasszon egy modulsablont: válassza a Azure Functions – C# lehetőséget.
- Adja meg a modul nevét: adja meg a modul CSharpFunction nevét.
- Adjon meg egy Docker-lemezképtárat a modulhoz: a rendszerképtár tartalmazza a tárolóregisztrációs adatbázis nevét és a tárolólemezkép nevét. A portál előre kitölti a konténerképet az utolsó lépésből. Cserélje le a localhost:5000Login-kiszolgáló értékét a Azure tárolóregisztrációs adatbázisból. A Bejelentkezési-kiszolgálót az Azure portálon található tárolóregisztrációs adatbázis Áttekintés lapjáról lekérdezheti. Az utolsó karaktersor így néz ki:
<registry name>.azurecr.io/csharpfunction.
Képernyőkép arról, hogy hol lehet hozzáadni a Docker képtár nevét a Visual Studio Code-ban.
A regisztrációs adatbázis hitelesítő adatainak hozzáadása
A megoldás környezeti fájlja tárolja a tárolóregisztrációs adatbázis hitelesítő adatait, és megosztja őket a IoT Edge futtatókörnyezettel. A futtatókörnyezetnek szüksége van ezekre a hitelesítő adatokra, hogy lekérje a privát rendszerképeket a IoT Edge eszközére.
A Visual Studio Code IoT Edge bővítménye megpróbálja lekérni a konténer-regisztrációs hitelesítő adatokat az Azure-ból, és beírja őket a beállítási fájlba. Ellenőrizze, hogy a hitelesítő adatai már szerepelnek-e a fájlban. Ha nem, vegye fel őket most:
- A Visual Studio Code explorerben nyissa meg a .env fájlt.
- Frissítse a mezőket a username és password értékekkel, amit a Azure tárolóregisztrációs adatbázisból másolt. Ha újra meg szeretné keresni őket, nyissa meg a tárolóregisztrációs adatbázist Azure, és keresse meg a Settings > Hozzáférési kulcsok lapot.
- Mentse el ezt a fájlt.
Megjegyzés
Ez az oktatóanyag rendszergazdai bejelentkezési hitelesítő adatokat használ a Azure Container Registry, amelyek a fejlesztési és tesztelési forgatókönyvek számára kényelmesek. Éles környezetben használjon minimális jogosultságú hitelesítési lehetőséget, például szolgáltatási főnevek. További információ: A tárolóregisztrációs adatbázishoz való hozzáférés kezelése.
Célarchitektúra beállítása AMD64-re
Azure Functions IoT Edge moduljai csak Linux AMD64-alapú tárolókon támogatottak. A Visual Studio Code alapértelmezett célarchitektúrája a Linux AMD64, de itt kifejezetten Linux AMD64-et állíthat be.
- Nyissa meg a parancskatalógust, és keresse meg a Azure IoT Edge: Alapértelmezett célplatform beállítása edge-megoldáshoz.
- A parancskatalógusban válassza ki az AMD64 célarchitektúrát a lehetőségek listájából.
A modul módosítása egyéni kóddal
Adjon hozzá kódot, hogy a CSharpFunction modul feldolgozza az üzeneteket a peremhálózaton, mielőtt továbbítsa őket a IoT Hub.
A Visual Studio Code explorerben nyissa meg a modules > CSharpFunction > CSharpFunction.cs.
Cserélje le a CSharpFunction.cs fájl tartalmát a következő kódra. Ez a kód telemetriát kap a környezeti és a gép hőmérsékletéről, és csak akkor továbbítja az üzenetet IoT Hub, ha a gép hőmérséklete meghaladja a megadott küszöbértéket.
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.EdgeHub; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Functions.Samples { public static class CSharpFunction { [FunctionName("CSharpFunction")] public static async Task FilterMessageAndSendMessage( [EdgeHubTrigger("input1")] Message messageReceived, [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output, ILogger logger) { const int temperatureThreshold = 20; byte[] messageBytes = messageReceived.GetBytes(); var messageString = System.Text.Encoding.UTF8.GetString(messageBytes); if (!string.IsNullOrEmpty(messageString)) { logger.LogInformation("Info: Received one non-empty message"); // Get the body of the message and deserialize it. var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString); if (messageBody != null && messageBody.machine.temperature > temperatureThreshold) { // Send the message to the output as the temperature value is greater than the threshold. using (var filteredMessage = new Message(messageBytes)) { // Copy the properties of the original message into the new Message object. foreach (KeyValuePair<string, string> prop in messageReceived.Properties) {filteredMessage.Properties.Add(prop.Key, prop.Value);} // Add a new property to the message to indicate it is an alert. filteredMessage.Properties.Add("MessageType", "Alert"); // Send the message. await output.AddAsync(filteredMessage); logger.LogInformation("Info: Received and transferred a message with temperature above the threshold"); } } } } } //Define the expected schema for the body of incoming messages. class MessageBody { public Machine machine {get; set;} public Ambient ambient {get; set;} public string timeCreated {get; set;} } class Machine { public double temperature {get; set;} public double pressure {get; set;} } class Ambient { public double temperature {get; set;} public int humidity {get; set;} } }Mentse a fájlt.
Az IoT Edge megoldás létrehozása és feltöltése
Az előző szakaszban létrehozott egy IoT Edge megoldást, és módosította a CSharpFunction az elfogadható küszöbérték alatti jelentett gépi hőmérsékletű üzenetek kiszűrésére. Most hozza létre a megoldást tárolólemezképként, és küldje el a tárolóregisztrációs adatbázisba.
Nyissa meg a Visual Studio Code integrált terminált. Válassza a Terminál megtekintése lehetőséget>.
Jelentkezzen be a Dockerbe a terminálban. Használja a felhasználónevet, a jelszót és a hitelesítési kiszolgálót a Azure tárolóregisztrációs adatbázisából. Ezeket az értékeket a beállításjegyzék Access kulcsok szakaszából szerezheti be a Azure portálon.
docker login -u <ACR username> -p <ACR password> <ACR login server>Előfordulhat, hogy biztonsági figyelmeztetést kap, amely a használatát
--password-stdinjavasolja. Bár ezt az eljárást gyártási környezetekhez ajánljuk, az oktatóanyag hatókörén kívül esik. További információkért tekintse meg a Docker bejelentkezési referenciát.A Visual Studio Code explorerben kattintson a jobb gombbal a deployment.template.json fájlra, majd válassza a Build és Push IoT Edge Solution lehetőséget.
A build és feltöltés parancs három műveletet indít el. Először létrehoz egy új mappát a konfiguráció nevű megoldásban, amely tartalmazza a teljes üzembehelyezési jegyzékfájlt, amely az üzembe helyezési sablonból és más megoldásfájlokból épül fel. Másodszorra futtatja
docker builda konténerkép létrehozásához a célarchitektúrához megfelelő Dockerfile alapján. Ezután leküldidocker pusha rendszerkép-adattárat a tárolóregisztrációs adatbázisba.Ez a folyamat első alkalommal több percet is igénybe vehet, de a parancsok legközelebbi futtatása gyorsabb lesz.
A konténerkép megtekintése
Visual Studio Code sikeres üzenetet jelenít meg, amikor leküldi a tárolórendszerképet a tárolóregisztrációs adatbázisba. A művelet megerősítéséhez tekintse meg a képet a nyilvántartásban.
- A Azure portálon nyissa meg a Azure tárolóregisztrációs adatbázisát.
- Válassza ki a Services-adattárakat>.
- A listában megjelenik a csharpfunction-adattár . A további részletek megtekintéséhez válassza ezt az adattárat.
- A Címkék szakaszban a 0.0.1-amd64 címke jelenik meg. Ez a címke a létrehozott rendszerkép verzióját és platformját jeleníti meg. A CSharpFunction mappa module.json fájlja beállítja ezeket az értékeket.
A megoldás üzembe helyezése és futtatása
Az Azure portálon helyezheti üzembe a függvénymodult egy IoT Edge eszközön, a gyors kezdéshez hasonlóan. A modulokat Visual Studio Code is üzembe helyezheti és figyelheti. A következő rész a Visual Studio Code bővítmények használatát ismerteti az előfeltételekben felsorolt Azure IoT Edge és IoT Hub technológiákhoz. Ha még nem tette meg, telepítse a bővítményeket.
Az Visual Studio Code explorerben a Azure IoT Hub szakaszban bontsa ki a Devices elemet az IoT-eszközök listájának megtekintéséhez.
Kattintson az IoT Edge eszköz nevére jobb gombbal, majd válassza a Telepítés létrehozása egyedi eszköz számára.
Nyissa meg a CSharpFunctiont tartalmazó megoldásmappát. Nyissa meg a konfigurációs mappát, válassza ki a deployment.amd64.json fájlt, majd válassza az Edge központi telepítési jegyzékének kiválasztása lehetőséget.
Az eszköz alatt bontsa ki a Modulok elemet az üzembe helyezett és a futó modulok listájának megtekintéséhez. Válassza a frissítés gombot. Az új CSharpFunction a SimulatedTemperatureSensor modullal, $edgeAgent és $edgeHub együtt fut.
Eltarthat néhány percig, mire az új modulok megjelennek. Az IoT Edge eszköz lekéri az új üzembehelyezési információkat az IoT Hub-tól, elindítja az új konténereket, majd visszajelzi az állapotot az IoT Hub-nak.
A létrejött adatok megtekintése
Az IoT Hubra érkező összes üzenet megtekintése az eszközökről a Azure IoT Hub: A beépített eseményvégpont monitorozásának indítása parancskatalógusban. Az üzenetek figyelésének leállításához futtassa a Azure IoT Hub: A beépített eseményvégpont figyelésének leállítása a parancskatalógusban.
A nézet szűréséhez és egy adott eszközről érkező üzenetek megtekintéséhez kattintson a jobb gombbal az eszközre a Azure IoT Hub > Eszközök Visual Studio Code szakaszában, majd válassza a Start Monitorozás beépített eseményvégpont lehetőséget.
Az erőforrások megtisztítása
Ha folytatni szeretné a következő ajánlott cikket, tartsa meg a létrehozott erőforrásokat és konfigurációkat, és használja újra őket. Azt is megteheti, hogy ugyanazt a IoT Edge eszközt használja, mint egy teszteszközt.
Ellenkező esetben törölje a helyi konfigurációt és a cikkben létrehozott Azure erőforrásokat a díjak elkerülése érdekében.
Azure-erőforrások törlése
Nem vonhatja vissza Azure erőforrások és erőforráscsoportok törlését. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha a IoT Hub egy meglévő erőforráscsoporton belül hozta létre, amelyben meg szeretné tartani az erőforrásokat, csak magát a IoT Hub erőforrást törölje, ne az erőforráscsoportot.
Az erőforrások törlése:
- Jelentkezzen be a Azure portálra, majd válassza a Csoportokat.
- Válassza ki a IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.
- Tekintse át az erőforráscsoport által tartalmazott erőforrások listáját. Ha mindet törölni szeretné, válassza az Erőforráscsoport törlése lehetőséget. Ha csak néhányat szeretne törölni, jelölje ki az egyes erőforrásokat, hogy egyenként törölje őket.
Következő lépések
Ebben az oktatóanyagban létrehozott egy Azure függvénymodult kóddal a IoT Edge eszköz által létrehozott nyers adatok szűréséhez.
Folytassa a következő oktatóanyagokkal, hogy megismerje azokat a módszereket, amelyekkel Azure IoT Edge segíthet az adatok üzleti elemzésekké alakításában a peremhálózaton.