Delen via


Uw eigen IoT Edge-modules ontwikkelen

Van toepassing op:IoT Edge 1.5 afvinken IoT Edge 1.5

Belangrijk

IoT Edge 1.5 LTS is de ondersteunde release. IoT Edge 1.4 LTS bereikt het einde van de levensduur op 12 november 2024. Als u een eerdere versie gebruikt, raadpleegt u Update IoT Edge.

Azure IoT Edge modules kunnen verbinding maken met andere Azure-services en bijdragen aan uw grotere pijplijn voor cloudgegevens. In dit artikel wordt beschreven hoe u modules kunt ontwikkelen om te communiceren met de IoT Edge runtime en IoT Hub, en daarom de rest van de Azure cloud.

IoT Edge runtime-omgeving

De IoT Edge runtime biedt de infrastructuur voor het integreren van de functionaliteit van meerdere IoT Edge modules en het implementeren ervan op IoT Edge apparaten. Elk programma kan worden verpakt als een IoT Edge module. Als u optimaal gebruik wilt maken van IoT Edge communicatie- en beheerfuncties, kan een programma dat in een module wordt uitgevoerd, de Azure IoT Device SDK gebruiken om verbinding te maken met de lokale IoT Edge hub.

Uw programma verpakken als een IoT Edge module

Als u uw programma op een IoT Edge apparaat wilt implementeren, moet u het eerst in een container plaatsen en uitvoeren met behulp van een docker-compatibele engine. IoT Edge maakt gebruik van Moby, het opensource-project achter Docker, als docker-compatibele engine. U kunt dezelfde parameters doorgeven die u met Docker gebruikt voor uw IoT Edge-modules. Zie Het configureren van opties voor het maken van containers voor IoT Edge modules voor meer informatie.

De IoT Edge-hub gebruiken

Een IoT Edge hub biedt twee belangrijke functies: een proxy voor IoT Hub en lokale communicatie.

Verbinding maken met IoT Edge hub vanuit een module

Verbinding maken met de lokale IoT Edge hub vanuit een module omvat dezelfde verbindingsstappen als voor alle clients. Zie Connecting to the IoT Edge hub voor meer informatie.

Als u IoT Edge routering via AMQP wilt gebruiken, kunt u de ModuleClient uit de Azure IoT SDK gebruiken. Maak een ModuleClient-exemplaar om uw module te verbinden met de IoT Edge hub die op het apparaat wordt uitgevoerd, vergelijkbaar met de manier waarop DeviceClient-exemplaren IoT-apparaten verbinden met IoT Hub. Zie de API-verwijzing voor de gewenste SDK-taal voor meer informatie over de klasse ModuleClient en de bijbehorende communicatiemethoden: C#, C, Python, Java of Node.js.

IoT Hub primitieven

IoT Hub ziet een module-exemplaar als vergelijkbaar met een apparaat. Een module-exemplaar kan het volgende doen:

Momenteel kunnen modules geen cloud-naar-apparaat-berichten ontvangen of de functie voor het uploaden van bestanden gebruiken.

Wanneer u een module schrijft, kunt u verbinding maken met de IoT Edge hub en IoT Hub primitieven gebruiken zoals u zou doen bij het gebruik van IoT Hub met een apparaattoepassing. Het enige verschil tussen IoT Edge modules en IoT-apparaattoepassingen is dat u met modules moet verwijzen naar de module-id in plaats van de apparaat-id.

Apparaat-naar-cloud-berichten

Een IoT Edge-module kan berichten naar de cloud verzenden via de IoT Edge hub die fungeert als een lokale broker en berichten doorstuurt naar de cloud. Om complexe verwerking van apparaat-naar-cloud-berichten mogelijk te maken, kan een IoT Edge module berichten die door andere modules of apparaten naar de lokale IoT Edge hub worden verzonden, onderscheppen en verwerken. De IoT Edge-module verzendt vervolgens nieuwe berichten met verwerkte gegevens. Op deze manier kunt u ketens van IoT Edge modules maken om lokale verwerkingspijplijnen te bouwen.

Apparaat-naar-cloud-telemetrieberichten verzenden met behulp van routes:

  • Gebruik de klasse ModuleClient van de Azure IoT SDK. Elke module heeft invoer - en uitvoereindpunten .
  • Als u berichten wilt verzenden op het uitvoereindpunt van uw module, gebruikt u een methode voor het verzenden van berichten uit uw ModuleClient klasse.
  • Als u dit uitvoereindpunt naar IoT Hub wilt verzenden, stelt u een route in de module edgeHub van uw apparaat in.

Berichten verwerken met behulp van routes:

  • Stel een route in om berichten te verzenden die afkomstig zijn van een ander eindpunt (module of apparaat) naar het invoereindpunt van uw module.
  • Luister naar berichten op het invoereindpunt van uw module. Telkens wanneer een nieuw bericht terugkomt, activeert de Azure IoT SDK een callback-functie.
  • Uw bericht verwerken met deze callback-functie en (optioneel) nieuwe berichten verzenden in de eindpuntwachtrij van de module.

Notitie

Zie Informatie over het implementeren van modules en het tot stand brengen van routes in IoT Edge voor meer informatie over het declareren van een route.

Tweeling

Twins zijn een van de primitieven van IoT Hub. Twins zijn JSON-documenten die statusinformatie opslaan, waaronder metagegevens, configuratie en voorwaarden. Elke module of elk apparaat heeft een eigen tweeling.

  • Als u een module twin wilt ophalen met behulp van de Azure IoT SDK, gebruikt u de methode ModuleClient.getTwin.
  • Als u een moduledubbelpatch wilt ontvangen met behulp van de Azure IoT SDK, implementeert u een callback-functie en registreert u deze met behulp van de methode ModuleClient.moduleTwinCallback, zodat de callback-functie wordt geactiveerd telkens wanneer er een dubbelpatch binnenkomt.

Directe methoden ontvangen

Als u een directe methode wilt ontvangen met behulp van de Azure IoT SDK, implementeert u een callback-functie en registreert u deze met behulp van de methode ModuleClient.methodCallback, zodat de callback-functie wordt geactiveerd telkens wanneer een directe methode binnenkomt.

Ondersteuning voor taal en architectuur

IoT Edge ondersteunt meerdere besturingssystemen, apparaatarchitecturen en ontwikkeltalen, zodat u het scenario kunt bouwen dat overeenkomt met uw behoeften. Gebruik deze sectie om inzicht te hebben in uw opties voor het ontwikkelen van aangepaste IoT Edge modules. Meer informatie over ondersteuning en vereisten voor hulpprogramma's voor elke taal vindt u in Prepareer uw ontwikkel- en testomgeving voor IoT Edge.

Linux

Voor alle talen in de volgende tabel, ondersteunt IoT Edge ontwikkeling voor AMD64 en de meeste ARM64 Linux-containers. Het ondersteunt ook Debian 11 ARM32-containers.

Ontwikkelingstaal Ontwikkelhulpprogramma’s
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

Notitie

Voor platformoverschrijdende compilatie, zoals het compileren van een ARM32-IoT Edge-module op een AMD64-ontwikkelcomputer, moet u de ontwikkelcomputer configureren om code te compileren op de doelapparaatarchitectuur die overeenkomt met de IoT Edge-module. Zie Tutorial: Ontwikkel Azure IoT Edge modules met Visual Studio Code voor meer informatie over doelapparaatarchitecturen.

Windows

Microsoft biedt geen ondersteuning meer voor Windows containers. IoT Edge voor Linux op Windows is de aanbevolen manier om IoT Edge uit te voeren op Windows apparaten.

Modulebeveiliging

Ontwikkel uw modules met het oog op beveiliging. Zie Docker Engine-beveiliging voor meer informatie over het beveiligen van uw modules.

Om de beveiliging van modules te verbeteren, schakelt IoT Edge standaard bepaalde containerfuncties uit. U kunt indien nodig de standaardinstellingen voor bevoegde mogelijkheden voor uw modules overschrijven.

Docker-machtigingen met verhoogde bevoegdheid toestaan

In het configuratiebestand op een IoT Edge apparaat beheert een parameter met de naam allow_elevated_docker_permissions verhoogde Docker-machtigingen. Als deze vlag is ingesteld op true, verleent deze de --privileged vlag en alle andere mogelijkheden die u definieert in het CapAdd veld van de Docker HostConfig in de opties voor het maken van containers.

Notitie

Deze vlag is momenteel standaard ingeschakeld, waardoor geavanceerde machtigingen worden verleend aan uitrol. Stel deze vlag in op false om de beveiliging van apparaten te verbeteren.

CAP_CHOWN en CAP_SETUID inschakelen

De Docker-mogelijkheden CAP_CHOWN en CAP_SETUID zijn standaard uitgeschakeld. Deze mogelijkheden kunnen schrijven naar beveiligde bestanden op het hostapparaat en mogelijk roottoegang verkrijgen.

Als u deze mogelijkheden nodig hebt, schakelt u deze handmatig opnieuw in met behulp van CapADD de opties voor het maken van containers.

Volgende stappen