Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Applies to:
IoT Edge 1.5
Viktigt!
IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphörde den 12 november 2024. Om du använder en tidigare version läser du Update IoT Edge.
Azure IoT Edge moduler kan ansluta till andra Azure tjänster och bidra till din större molndatapipeline. Den här artikeln beskriver hur du kan utveckla moduler för att kommunicera med IoT Edge runtime och IoT Hub, och därmed resten av Azure molnet.
IoT Edge körningsmiljö
IoT Edge-körningen tillhandahåller infrastrukturen för att integrera funktionerna i flera IoT Edge moduler och distribuera dem till IoT Edge enheter. Alla program kan paketeras som en IoT Edge modul. För att dra full nytta av IoT Edge kommunikations- och hanteringsfunktioner kan ett program som körs i en modul använda Azure IoT Device SDK för att ansluta till den lokala IoT Edge hubben.
Paketera programmet som en IoT Edge modul
Om du vill distribuera programmet på en IoT Edge enhet måste du först containerisera det och köra det med en Docker-kompatibel motor. IoT Edge använder Moby, projektet med öppen källkod bakom Docker, som dess Docker-kompatibla motor. Du kan skicka samma parametrar som du är van vid med Docker till dina IoT Edge moduler. Mer information finns i Så här konfigurerar du alternativ för att skapa containrar för IoT Edge moduler.
Använda IoT Edge hubben
En IoT Edge hubb har två huvudsakliga funktioner: en proxy för IoT Hub och lokal kommunikation.
Ansluta till IoT Edge hubb från en modul
Anslutning till den lokala IoT Edge hubben från en modul omfattar samma anslutningssteg som för alla klienter. Mer information finns i Ansluta till IoT Edge hubben.
Om du vill använda IoT Edge routning via AMQP kan du använda ModuleClient från Azure IoT SDK. Skapa en ModuleClient-instans för att ansluta modulen till den IoT Edge hubb som körs på enheten, ungefär som hur DeviceClient instanser ansluter IoT-enheter till IoT Hub. Mer information om klassen ModuleClient och dess kommunikationsmetoder finns i API-referensen för önskat SDK-språk: C#, C, Python, Java eller Node.js.
IoT Hub grundkomponenter
IoT Hub ser en modulinstans som liknar en enhet. En modulinstans kan:
- Skicka meddelanden från enhet till moln.
- Ta emot direkta metoder som är specifikt riktade mot dess identitet.
- Ha en modultvilling som är distinkt och isolerad från enhetstvillingen och de andra modultvillingarna på den enheten.
För närvarande kan moduler inte ta emot meddelanden från molnet till enheten eller använda filuppladdningsfunktionen.
När du skriver en modul kan du ansluta till IoT Edge hubben och använda IoT Hub primitiver som när du använder IoT Hub med ett enhetsprogram. Den enda skillnaden mellan IoT Edge moduler och IoT-enhetsprogram är att du med moduler måste referera till modulidentiteten i stället för enhetsidentiteten.
Meddelanden från enheten till molnet
En IoT Edge-modul kan skicka meddelanden till molnet via IoT Edge-hubben som fungerar som en lokal meddelandeförmedlare och sprider meddelanden till molnet. För att möjliggöra komplex bearbetning av meddelanden från enhet till moln kan en IoT Edge modul fånga upp och bearbeta meddelanden som skickas av andra moduler eller enheter till dess lokala IoT Edge hubb. Modulen IoT Edge skickar sedan nya meddelanden med bearbetade data. På så sätt kan du skapa kedjor med IoT Edge moduler för att skapa lokala bearbetningspipelines.
Så här skickar du telemetrimeddelanden från enhet till moln med hjälp av vägar:
- Använd klassen
ModuleClientför Azure IoT SDK. Varje modul har indata - och utdataslutpunkter . - Om du vill skicka meddelanden på utdataslutpunkten för din modul använder du en send message-metod från klassen
ModuleClient. - Om du vill skicka utdataslutpunkten till IoT Hub konfigurerar du en väg i modulen
edgeHubpå enheten.
Så här bearbetar du meddelanden med hjälp av vägar:
- Konfigurera en väg för att skicka meddelanden som kommer från en annan slutpunkt (modul eller enhet) till modulens indataslutpunkt.
- Lyssna efter meddelanden på modulens indataslutpunkt. Varje gång ett nytt meddelande kommer tillbaka utlöser Azure IoT SDK en återanropsfunktion.
- Bearbeta meddelandet med hjälp av den här återanropsfunktionen och (om du vill) skicka nya meddelanden i modulslutpunktskö.
Kommentar
Mer information om hur du deklarerar en väg finns i Läsa hur du distribuerar moduler och upprättar vägar i IoT Edge.
Tvillingar
Twins är en av de primitiver som tillhandahålls av IoT Hub. Tvillingar är JSON-dokument som lagrar tillståndsinformation, inklusive metadata, konfiguration och villkor. Varje modul eller enhet har en egen tvilling.
- Om du vill hämta en modultvilling med hjälp av metoden Azure IoT SDK anropar du metoden
ModuleClient.getTwin. - Om du vill ta emot en modultvillingskorrigering med hjälp av Azure IoT SDK implementerar du en återanropsfunktion och registrerar den med hjälp av metoden
ModuleClient.moduleTwinCallbackså att återanropsfunktionen utlöses varje gång en tvillingkorrigering kommer in.
Ta emot direkta metoder
Om du vill ta emot en direktmetod med hjälp av metoden Azure IoT SDK implementerar du en återanropsfunktion och registrerar den med hjälp av metoden ModuleClient.methodCallback så att återanropsfunktionen utlöses varje gång en direktmetod kommer in.
Stöd för språk och arkitektur
IoT Edge stöder flera operativsystem, enhetsarkitekturer och utvecklingsspråk så att du kan skapa scenariot som matchar dina behov. Använd det här avsnittet för att förstå dina alternativ för att utveckla anpassade IoT Edge moduler. Du kan lära dig mer om verktygsstöd och krav för varje språk i Förbered utvecklings- och testmiljön för IoT Edge.
Linux
För alla språk i den följande tabellen stöder IoT Edge stöder utveckling för AMD64 och de flesta ARM64 Linux-containrar. Det stöder även Debian 11 ARM32-containrar.
| Utvecklingsspråk | Utvecklingsverktyg |
|---|---|
| C | Visual Studio Code Visual Studio 2019/2022 |
| C# | Visual Studio Code Visual Studio 2019/2022 |
| Java | Visual Studio Code |
| Node.js | Visual Studio Code |
| Python | Visual Studio Code |
Kommentar
För plattformsoberoende kompilering, till exempel kompilering av en ARM32-IoT Edge-modul på en AMD64-utvecklingsdator, måste du konfigurera utvecklingsdatorn för att kompilera kod på målenhetsarkitekturen som matchar IoT Edge-modulen. Mer information om målenhetsarkitekturer finns i Tutorial: Utveckla Azure IoT Edge moduler med hjälp av Visual Studio Code.
Windows
Microsoft stöder inte längre Windows containrar. IoT Edge för Linux på Windows är det rekommenderade sättet att köra IoT Edge på Windows enheter.
Modulsäkerhet
Utveckla dina moduler med säkerhet i åtanke. Mer information om hur du skyddar dina moduler finns i Docker Engine-säkerhet.
För att förbättra modulsäkerheten inaktiverar IoT Edge vissa containerfunktioner som standard. Du kan åsidosätta standardinställningarna för att tillhandahålla privilegierade funktioner till dina moduler om det behövs.
Tillåt utökade Docker-behörigheter
I konfigurationsfilen på en IoT Edge enhet kontrollerar en parameter som kallas allow_elevated_docker_permissions utökade Docker-behörigheter. När den här flaggan är inställd på true ger den --privileged flaggan och andra funktioner som du definierar i CapAdd fältet för Docker HostConfig i alternativen för att skapa containern.
Kommentar
För närvarande är den här flaggan sann som standard, vilket ger privilegierade behörigheter till distributioner. Ange den här flaggan till false för att förbättra enhetens säkerhet.
Aktivera CAP_CHOWN och CAP_SETUID
Docker-funktionerna CAP_CHOWN och CAP_SETUID inaktiveras som standard. Dessa funktioner kan skriva till säkra filer på värdenheten och eventuellt få rotåtkomst.
Om du behöver de här funktionerna återaktiverar du dem manuellt med hjälp CapADD av alternativen för att skapa containrar.