Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
IoT Edge 1,5
Wichtig
IoT Edge 1.5 LTS ist die unterstützte Version. IoT Edge 1.4 LTS erreichte am 12. November 2024 das Ende des Lebens. Wenn Sie eine frühere Version verwenden, lesen Sie Update IoT Edge.
Verwenden Sie Azure Functions, um Code bereitzustellen, der Ihre Geschäftslogik direkt auf Ihren Azure IoT Edge-Geräten ausführt. In diesem Lernprogramm erfahren Sie, wie Sie eine Azure-Funktion erstellen und bereitstellen, die Sensordaten auf einem simulierten IoT Edge Gerät filtert. Verwenden Sie das simulierte IoT Edge Gerät, das Sie in den Schnellstarts erstellt haben. In diesem Tutorial lernen Sie Folgendes:
- Verwenden von Visual Studio Code zum Erstellen einer Azure-Funktion
- Verwenden von Visual Studio Code und Docker zum Erstellen eines Docker-Images und Veröffentlichen in einer Containerregistrierung
- Modul aus der Container-Registry auf Ihrem IoT Edge-Gerät bereitstellen
- Gefilterte Daten anzeigen
Die Azure Funktion, die Sie in diesem Lernprogramm erstellen, filtert Temperaturdaten, die von Ihrem Gerät generiert werden. Die Funktion sendet nur Nachrichten an Azure IoT Hub, wenn die Temperatur über einem angegebenen Schwellenwert liegt.
Wenn Sie kein Azure Konto haben, erstellen Sie ein free-Konto bevor Sie beginnen.
Voraussetzungen
Bevor Sie mit diesem Lernprogramm beginnen, folgen Sie dem Lernprogramm zum Einrichten Ihrer Entwicklungsumgebung für die Linux-Containerentwicklung: Develop-Azure IoT Edge Module mit Visual Studio Code. Wenn Sie fertig sind, haben Sie die folgenden Voraussetzungen:
- Eine kostenlose oder standardstufige IoT Hub in Azure.
- Ein AMD64-Gerät, auf dem Azure IoT Edge mit Linux-Containern ausgeführt wird. Verwenden Sie die Schnellstartanleitung zum Einrichten eines Linux-Geräts oder Windows Geräts.
- Eine Containerregistrierung, z. B. Azure Container Registry.
- Visual Studio Code mit den Erweiterungen Azure IoT Edge und Azure IoT Hub eingerichtet. Die Azure IoT Edge Tools für Visual Studio Code Erweiterung befindet sich im Wartungsmodus.
- Laden Sie ein Docker-kompatibles Containerverwaltungssystem auf Ihrem Entwicklungscomputer herunter, und installieren Sie es. Stellen Sie es ein, um Linux-Container auszuführen.
Um ein IoT Edge Modul mit Azure Functions zu entwickeln, installieren Sie diese zusätzlichen Voraussetzungen auf Ihrem Entwicklungscomputer:
Erstellen eines Funktionsprojekts
Azure IoT Edge für Visual Studio Code bieten Ihnen Verwaltungsfunktionen und Codevorlagen. In diesem Abschnitt verwenden Sie Visual Studio Code, um eine IoT Edge Lösung mit einer Azure-Funktion zu erstellen.
Erstellen eines neuen Projekts
Führen Sie die folgenden Schritte aus, um eine anpassbare C#-Funktionslösungsvorlage zu erstellen.
Öffnen Sie Visual Studio Code auf Ihrem Entwicklungscomputer.
Öffnen Sie die Befehlspalette Visual Studio Code, indem Sie View > Befehlspalette auswählen.
Fügen Sie in der Befehlspalette den Befehl Azure IoT Edge: Neue IoT Edge lösung hinzu, und führen Sie sie aus. Folgen Sie diesen Anweisungen in der Befehlspalette, um Ihre Projektmappe zu erstellen:
- Wählen Sie einen Ordner aus: Wählen Sie den Speicherort auf Ihrem Entwicklungscomputer aus, damit Visual Studio Code die Lösungsdateien erstellen können.
- Geben Sie einen Lösungsnamen an: Fügen Sie einen beschreibenden Namen für Ihre Lösung hinzu, z. B. FunctionSolution, oder akzeptieren Sie den Standardwert.
- Wählen Sie eine Modulvorlage aus: wählen Sie Azure Functions - C# aus.
- Geben Sie einen Modulnamen an: Benennen Sie Ihr Modul CSharpFunction.
- Stellen Sie ein Docker-Image-Repository für das Modul bereit: Ein Image-Repository enthält den Namen Ihrer Containerregistrierung und den Namen Ihres Containerimages. Das Portal wird automatisch mit Ihrem Container-Image aus dem letzten Schritt befüllt. Ersetzen Sie localhost:5000 durch den Login-Serverwert aus Ihrer Azure Containerregistrierung. Sie können den Login-Server aus der Seite Overview Ihrer Containerregistrierung im Azure Portal abrufen. Die letzte Zeichenfolge sieht wie
<registry name>.azurecr.io/csharpfunctionaus.
Screenshot, das zeigt, wo Sie den Namen Ihres Docker-Image-Repositorys in Visual Studio Code hinzufügen können.
Hinzufügen von Registrierungsanmeldeinformationen
Die Umgebungsdatei in Ihrer Lösung speichert die Anmeldeinformationen für Ihre Containerregistrierung und teilt sie mit der IoT Edge Laufzeit. Die Laufzeit benötigt diese Anmeldeinformationen, um Ihre privaten Bilder auf Ihr IoT Edge Gerät zu übertragen.
"Die Erweiterung „IoT Edge“ in Visual Studio Code versucht, die Anmeldeinformationen Ihrer Containerregistrierung aus Azure abzurufen und in die Umgebungsdatei einzufügen." Überprüfen Sie, ob Sich Ihre Anmeldeinformationen bereits in der Datei befinden. Fügen Sie sie jetzt hinzu, wenn dies nicht der Fall ist:
- Öffnen Sie im Visual Studio Code-Explorer die Datei .env.
- Aktualisieren Sie die Felder mit den Werten benutzername und password aus der Azure-Containerregistrierung. Um sie erneut zu finden, wechseln Sie in Azure zur Containerregistrierung, und suchen Sie auf der Seite Settings > Access Keys.
- Speichern Sie diese Datei.
Hinweis
In diesem Lernprogramm werden Administratoranmeldeinformationen für Azure Container Registry verwendet, die für Entwicklungs- und Testszenarien geeignet sind. Verwenden Sie für die Produktion eine Authentifizierungsoption mit minimalen Rechten wie Service-Prinzipale. Weitere Informationen finden Sie unter Verwalten des Zugriffs auf Ihre Containerregistrierung.
Festlegen der Zielarchitektur auf AMD64
Azure Functions Module auf IoT Edge werden nur für Linux AMD64-basierte Container unterstützt. Die Standardzielarchitektur für Visual Studio Code ist Linux AMD64, aber Sie können sie hier explizit auf Linux AMD64 festlegen.
- Öffnen Sie die Befehlspalette, und suchen Sie nach Azure IoT Edge: Standardzielplattform für Edgelösung festlegen.
- Wählen Sie in der Befehlspalette die Zielarchitektur AMD64 aus der Optionsliste aus.
Aktualisieren des Moduls mit benutzerdefiniertem Code
Fügen Sie Code hinzu, damit Ihr CSharpFunctionModul Nachrichten am Rand verarbeitet, bevor sie an IoT Hub weitergeleitet werden.
Öffnen Sie im Visual Studio Code Explorer die Module > CSharpFunction > CSharpFunction.cs.
Ersetzen Sie den Inhalt der Datei CSharpFunction.cs durch den folgenden Code. Dieser Code empfängt Telemetrie zu Umgebungs- und Maschinentemperatur und leitet die Nachricht nur dann an IoT Hub weiter, wenn die Computertemperatur über einem definierten Schwellenwert liegt.
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;} } }Speichern Sie die Datei .
Erstellen und Veröffentlichen Ihrer IoT-Edge-Lösung
Im vorherigen Abschnitt haben Sie eine IoT Edge Lösung erstellt und die CSharpFunction so geändert, dass Nachrichten mit gemeldeten Maschinentemperaturen unterhalb des zulässigen Schwellenwerts gefiltert werden. Erstellen Sie nun die Lösung als Containerimage, und übertragen Sie sie an Ihre Containerregistrierung.
Öffnen Sie das in Visual Studio Code integrierte Terminal. Wählen Sie "Terminal anzeigen" >aus.
Melden Sie sich beim Docker im Terminal an. Verwenden Sie den Benutzernamen, das Kennwort und den Authentifizierungsserver aus Ihrer Azure-Containerregistrierung. Rufen Sie diese Werte aus dem Abschnitt Access keys Ihrer Registrierung im Azure-Portal ab.
docker login -u <ACR username> -p <ACR password> <ACR login server>Möglicherweise wird Ihnen in einem Sicherheitshinweis die Verwendung von
--password-stdinempfohlen. Diese bewährte Methode wird für Produktionsszenarien empfohlen, aber sie ist nicht Gegenstand dieses Tutorials. Weitere Informationen finden Sie in der Docker-Anmeldereferenz .Klicken Sie im Visual Studio Code-Explorer mit der rechten Maustaste auf die Datei deployment.template.json, und wählen Sie dann Erstellen und Push von IoT Edge Lösung aus.
Der Befehl zum Erstellen und Übertragen per Push startet drei Vorgänge. Zunächst wird ein neuer Ordner in der Lösung namens Config erstellt, der über das vollständige Bereitstellungsmanifest verfügt, das aus der Bereitstellungsvorlage und anderen Lösungsdateien erstellt wird. Anschließend wird
docker buildzum Erstellen des Containerimages ausgeführt, das auf der entsprechenden Dockerfile für Ihre Zielarchitektur basiert. Und schließlich führt erdocker pushaus, um das Imagerepository per Push in Ihre Containerregistrierung zu übertragen.Dieser Vorgang kann mehrere Minuten dauern, aber es ist schneller, wenn Sie die Befehle das nächste Mal ausführen.
Anzeigen des Containerimages
Visual Studio Code zeigt eine Erfolgsmeldung an, wenn Sie Ihr Containerimage in die Containerregistrierung übertragen. Um den Vorgang zu bestätigen, sehen Sie sich das Bild im Registry an.
- Wechseln Sie im Azure-Portal zur Azure Containerregistrierung.
- Wählen Sie Dienste-Repositorys> aus.
- Das Csharpfunction-Repository wird in der Liste angezeigt. Wählen Sie dieses Repository aus, um weitere Details anzuzeigen.
- Im Abschnitt Tags siehst du das Tag 0.0.1-amd64. Dieses Tag zeigt die Version und Plattform des von Ihnen erstellten Images an. Die module.json Datei im Ordner "CSharpFunction " legt diese Werte fest.
Bereitstellen und Ausführen der Projektmappe
Verwenden Sie das Azure Portal, um Ihr Funktionsmodul wie in der Schnellstartanleitung auf einem IoT Edge Gerät bereitzustellen. Sie können Module auch über Visual Studio Code bereitstellen und überwachen. In den folgenden Abschnitten werden die in den Voraussetzungen aufgeführten Azure IoT Edge und IoT Hub für Visual Studio Code Erweiterungen verwendet. Installieren Sie die Erweiterungen jetzt, wenn Sie dies noch nicht getan haben.
Erweitern Sie im Visual Studio Code Explorer unter dem Abschnitt Azure IoT HubDevices, um die Liste der IoT-Geräte anzuzeigen.
Klicken Sie mit der rechten Maustaste auf den Namen Ihres IoT Edge Geräts, und wählen Sie dann Bereitstellung für einzelne Geräte erstellen aus.
Wechseln Sie zum Lösungsordner mit der CSharpFunction. Öffnen Sie den Konfigurationsordner, und wählen Sie die Datei deployment.amd64.json und anschließend Select Edge Deployment Manifest (Edge-Bereitstellungsmanifest auswählen) aus.
Erweitern Sie unter Ihrem Gerät Module , um eine Liste der bereitgestellten und ausgeführten Module anzuzeigen. Klicken Sie auf die Schaltfläche Aktualisieren. Sie können die neue CSharpFunction zusammen mit dem SimulatedTemperatureSensor-Modul, $edgeAgent und $edgeHub laufen sehen.
Es kann einige Momente dauern, bis die neuen Module angezeigt werden. Das IoT Edge Gerät ruft seine neuen Bereitstellungsinformationen aus IoT Hub ab, startet die neuen Container und meldet dann den Status zurück an IoT Hub.
Anzeigen der generierten Daten
Zeigen Sie alle Nachrichten an, die von Ihren Geräten aus an Ihrem IoT-Hub ankommen, indem Sie Azure IoT Hub ausführen: Starten sie die integrierte Ereignisendpunktüberwachung in der Befehlspalette. Um die Überwachung von Nachrichten zu beenden, führen Sie Azure IoT Hub: Überwachung des integrierten Ereignisendpunkts stoppen in der Befehlspalette aus.
Um die Ansicht zu filtern und Nachrichten von einem bestimmten Gerät anzuzeigen, klicken Sie mit der rechten Maustaste auf das Gerät im Azure IoT Hub > Devices Abschnitt des Visual Studio Code-Explorers, und wählen Sie Start Monitoring Built-in Event Endpoint aus.
Bereinigen von Ressourcen
Wenn Sie den nächsten empfohlenen Artikel fortsetzen möchten, behalten Sie die von Ihnen erstellten Ressourcen und Konfigurationen bei, und verwenden Sie sie wieder. Sie können auch dasselbe IoT Edge Gerät wie ein Testgerät verwenden.
Löschen Sie andernfalls die lokale Konfiguration und die Azure Ressourcen, die Sie in diesem Artikel erstellt haben, um Gebühren zu vermeiden.
Löschen Azure Ressourcen
Sie können das Löschen Azure Ressourcen und Ressourcengruppen nicht rückgängigmachen. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen. Wenn Sie die IoT Hub in einer vorhandenen Ressourcengruppe erstellt haben, die Ressourcen enthält, die Sie behalten möchten, löschen Sie nur die IoT Hub Ressource selbst, nicht die Ressourcengruppe.
So löschen Sie die Ressourcen:
- Melden Sie sich beim portal Azure an, und wählen Sie dann Resource groups aus.
- Wählen Sie den Namen der Ressourcengruppe aus, die Ihre IoT Edge Testressourcen enthält.
- Überprüfen Sie die Liste der Ressourcen, die Ihre Ressourcengruppe enthält. Wenn Sie alle löschen möchten, können Sie " Ressourcengruppe löschen" auswählen. Wenn Sie nur einige davon löschen möchten, wählen Sie jede Ressource aus, um sie einzeln zu löschen.
Nächste Schritte
In diesem Lernprogramm haben Sie ein Azure Funktionsmodul mit Code erstellt, um Rohdaten zu filtern, die von Ihrem IoT Edge Gerät generiert werden.
Fahren Sie mit den nächsten Lernprogrammen fort, um weitere Möglichkeiten zu lernen, wie Azure IoT Edge Ihnen helfen können, Daten in Geschäftseinblicke am Edge umzuwandeln.