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őkre vonatkozik:
IoT Edge 1.5
Fontos
Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadásban dolgozik, tekintse meg az IoT Edge frissítését.
Az 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 olyan Azure-függvényeket, amelyek az érzékelőadatokat szimulált IoT Edge-eszközön szűrik. Használja a rövid útmutatókban 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 az IoT Edge-eszközön
- 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 üzeneteket az Azure IoT Hub felé, ha a hőmérséklet meghaladja a megadott küszöbértéket.
Ha még nem rendelkezik Azure-fiókkal, első lépésként hozzon létre egy ingyenes 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: Azure IoT Edge-modulok fejlesztése a Visual Studio Code használatával. Ha végzett, a következő előfeltételek teljesülnek:
- Ingyenes vagy standard szintű IoT Hub az Azure-ban
- Az Azure IoT Edge-et Linux-tárolókkal futtató AMD64-eszköz. A rövid útmutató segítségével linuxos vagyWindows rendszerű eszközt állíthat be.
- Egy tárolóregisztrációs adatbázis, például az Azure Container Registry
- A Visual Studio Code az Azure IoT Edge és az Azure IoT Hub bővítményekkel van beállítva. A Visual Studio Code-bővítményhez készült Azure IoT Edge-eszközökkarbantartási módban használhatók.
- 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 IoT Edge-modult szeretne fejleszteni az Azure Functions használatával, telepítse ezeket a további előfeltételeket a fejlesztőgépre:
Függvényprojekt létrehozása
Az Azure IoT Edge for Visual Studio Code felügyeleti képességeket és kódsablonokat biztosít. Ebben a szakaszban a Visual Studio Code használatával hoz létre egy IoT Edge-megoldást egy Azure-függvény használatával.
Ú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-ot a fejlesztői gépen.
Nyissa meg a Visual Studio Code parancskatalógusát aParancskatalógus> gombra kattintva.
A parancskatalógusban adja hozzá és futtassa az Azure IoT Edge: Új IoT Edge-megoldás parancsot. 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 Visual Studio Code fejlesztői gépének 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 az Azure Functions – C# lehetőséget.
- Adja meg a modul nevét | Nevezze el a CSharpFunction modult.
- Adjon meg egy Docker-rendszerképtárat a modulhoz. Egy rendszerképadattár a tárolóregisztrációs adatbázis nevét és a tárolórendszerkép nevét tartalmazza. A tárolórendszerkép az utolsó lépéstől kezdve előre ki van töltve. Cserélje le a localhost:5000 értéket az Azure-tárolóregisztrációs adatbázis bejelentkezési kiszolgálójának értékére. A bejelentkezési kiszolgáló az Azure Portal tárolóregisztrációs adatbázisának Áttekintés oldaláról kérhető le. A sztring végső változata a következőképpen néz ki: <registry name>.azurecr.io/csharpfunction.
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 az 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 az IoT Edge-eszközére.
A Visual Studio Code IoT Edge-bővítménye megpróbálja lekérni a tárolóregisztrációs adatbázis hitelesítő adatait az Azure-ból, és feltölti őket a környezeti fájlban. Ellenőrizze, hogy a hitelesítő adatai már szerepelnek-e a fájlban. Ha nem, vegye fel őket most:
- Nyissa meg
.enva fájlt a Visual Studio Code Explorerben. - Frissítse a mezőket az Azure-tárolóregisztrációs adatbázisból kimásolt felhasználónévvel és jelszóértékekkel . Ha újra meg szeretné keresni őket, nyissa meg a tárolóregisztrációs adatbázist az Azure-ban, és keresse meg a Beállítások>hozzáférési kulcsok lapot.
- Mentse el ezt a fájlt.
Feljegyzés
Ez az oktatóanyag rendszergazdai bejelentkezési hitelesítő adatokat használ az Azure Container Registryhez, amelyek fejlesztési és tesztelési forgatókönyvek esetén 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
Az IoT Edge-en futó Azure Functions-modulok 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ít be.
Nyissa meg a parancskatalógust, és keresse meg az Azure IoT Edge: Set Default Target Platform for Edge Solution (Alapértelmezett célplatform beállítása edge-megoldáshoz) parancskatalógust.
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á néhány kódot, hogy a CSharpFunction modul feldolgozza az üzeneteket a peremhálózaton, mielőtt továbbítsa őket az IoT Hubra.
A Visual Studio Code Explorerben nyissa meg aCSharpFunction>CSharpFunction.cs>.
Cserélje le a CSharpFunction.cs fájl tartalmát a következő kódra. Ez a kód telemetriai adatokat fogad a környezeti és a gép hőmérsékletéről, és csak akkor továbbítja az üzenetet az IoT Hubnak, 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 leküldése
Az előző szakaszban létrehozott egy IoT Edge-megoldást, és módosította a CSharpFunctiont , hogy kiszűrje az elfogadható küszöbérték alatti jelentett gépi hőmérsékletű üzeneteket. 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álját. Válassza a Megtekintés>Terminál lehetőséget.
Jelentkezzen be a Dockerbe a terminálban. Használja a felhasználónevet, a jelszót és a bejelentkezési kiszolgálót az Azure-tárolóregisztrációs adatbázisból. Ezeket az értékeket a beállításjegyzék Access-kulcsok szakaszából szerezheti be az Azure Portalon.
docker login -u <ACR username> -p <ACR password> <ACR login server>Biztonsági figyelmeztetést kaphat, amely ajánlja a
--password-stdinhasználatát. Bár ez az ajánlott eljárás éles forgatókönyvekhez ajánlott, 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 and Push IoT Edge Solution (IoT Edge-megoldás létrehozása és leküldése) lehetőséget.
A buildelési és leküldéses 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 tárolórendszerkép megtekintése
A Visual Studio Code sikeres üzenetet jelenít meg, amikor a tárolórendszerkép le lesz küldve 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.
- Az Azure Portalon nyissa meg az Azure Container Registryt.
- Válassza ki a Szolgáltatások>Adattárak lehetőséget.
- 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. Ezek az értékek a CSharpFunction mappa module.json fájljában vannak beállítva.
A megoldás üzembe helyezése és futtatása
Az Azure Portal használatával üzembe helyezheti a függvénymodult egy IoT Edge-eszközön, például a rövid útmutatóban. A Visual Studio Code-ból is üzembe helyezhet és monitorozhat modulokat. A következő szakaszok az előfeltételekben felsorolt Azure IoT Edge- és IoT Hub for Visual Studio Code-bővítményeket használják. Ha még nem tette meg, telepítse a bővítményeket.
A Visual Studio Code Explorer Azure IoT Hub szakaszában bontsa ki az Eszközök elemet az IoT-eszközök listájának megtekintéséhez.
Kattintson a jobb gombbal az IoT Edge-eszköz nevére, majd válassza az Üzembe helyezés létrehozása önálló eszközhöz lehetőséget.
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 Hubról, elindítja az új tárolókat, majd az állapotot visszajelezi az IoT Hubnak.
A létrejött adatok megtekintése
Nézze meg az összes üzenetet, amely az eszközeiről érkezik az IoT hubjára, ha a parancspalettában futtatja az Azure IoT Hub: Beépített eseményvégpont figyelésének indítása lehetőséget. Az üzenetek monitorozásának leállításához futtassa az Azure IoT Hubot: Állítsa le a beépített eseményvégpont monitorozását 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 Visual Studio Code Explorer Azure IoT> szakaszában, és válassza a Beépített eseményvégpont monitorozásának indítása lehetőséget.
Az erőforrások eltávolí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 ugyanezt az IoT Edge-eszközt használja teszteszközként.
Ellenkező esetben a díjak elkerülése érdekében törölje a cikkben létrehozott helyi konfigurációkat és Azure-erőforrásokat.
Azure-erőforrások törlése
Az Azure-erőforrások és -erőforráscsoportok törlése visszafordíthatatlan. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha az IoT Hubot egy meglévő erőforráscsoporton belül hozta létre, amelyben meg szeretné tartani az erőforrásokat, csak magát az IoT Hub-erőforrást törölje, nem pedig az erőforráscsoportot.
Az erőforrások törlése:
- Jelentkezzen be az Azure Portalra, majd válassza ki az Erőforráscsoportokat.
- Válassza ki az 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 az összeset 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, az egyes erőforrásokat egyenként is törölheti.
Következő lépések
Ebben az oktatóanyagban létrehozott egy Azure-függvénymodult kóddal az IoT Edge-eszköz által létrehozott nyers adatok szűréséhez.
Továbbléphet a következő oktatóanyagokra, és megtudhatja, milyen más módokon alakíthatja üzleti megállapításokká ezeket az adatokat a peremhálózaton az Azure IoT Edge segítségével.