Uw eigen IoT Edge-modules ontwikkelen

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

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-runtimeomgeving

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

Uw programma verpakken als een IoT Edge-module

Als u uw programma wilt implementeren op een IoT Edge-apparaat, moet het eerst worden gecontaineriseerd en uitgevoerd met een Docker-compatibele engine. IoT Edge maakt gebruik van Moby, het opensource-project achter Docker, als docker-compatibele engine. Dezelfde parameters die u met Docker gebruikt, kunnen worden doorgegeven aan uw IoT Edge-modules. Zie Opties voor het maken van containers configureren voor IoT Edge-modules voor meer informatie.

De IoT Edge-hub gebruiken

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

Verbinding maken naar IoT Edge-hub vanuit een module

Verbinding maken naar de lokale IoT Edge-hub vanuit een module bestaat uit dezelfde verbindingsstappen als voor clients. Zie Verbinding maken naar de IoT Edge-hub voor meer informatie.

Als u IoT Edge-routering via AMQP wilt gebruiken, kunt u de ModuleClient van 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 hoe DeviceClient-exemplaren IoT-apparaten verbinden met IoT Hub. Zie de API-verwijzing voor de sdk-taal van uw voorkeur: C#, C, Python, Java of Node.js voor meer informatie over de ModuleClient-klasse en de bijbehorende communicatiemethoden.

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 dat 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 naar de module-id moet verwijzen in plaats van de apparaat-id.

Apparaat-naar-cloud-berichten

Een IoT Edge-module kan berichten verzenden naar de cloud 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 onderscheppen en verwerken die door andere modules of apparaten naar de lokale IoT Edge-hub worden verzonden. De IoT Edge-module verzendt vervolgens nieuwe berichten met verwerkte gegevens. Ketens van IoT Edge-modules kunnen dus worden gemaakt om lokale verwerkingspijplijnen te bouwen.

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

  • Gebruik de moduleclientklasse van de Azure IoT SDK. Elke module heeft invoer - en uitvoereindpunten .
  • Gebruik een verzendberichtmethode van uw moduleclientklasse om berichten te verzenden op het uitvoereindpunt van uw module.
  • Stel een route in de edgeHub-module van uw apparaat in om dit uitvoereindpunt naar IoT Hub te verzenden.

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, wordt een callback-functie geactiveerd door de Azure IoT SDK.
  • Verwerk uw bericht met deze callback-functie en verzend (optioneel) nieuwe berichten in de eindpuntwachtrij van de module.

Notitie

Zie Voor meer informatie over het declareren van een route, meer informatie over het implementeren van modules en het tot stand brengen van routes in IoT Edge

Twins

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

  • Als u een moduledubbel met de Azure IoT SDK wilt ophalen, roept u de ModuleClient.getTwin methode aan.

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

Directe methoden ontvangen

Als u een directe methode wilt ontvangen met de Azure IoT SDK, implementeert u een callback-functie en registreert u deze bij de ModuleClient.methodCallback methode van de Azure IoT SDK, zodat uw callback-functie wordt geactiveerd telkens wanneer er 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 De ontwikkel- en testomgeving voorbereiden voor IoT Edge.

Linux

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

Ontwikkelingstaal Ontwikkelhulpprogramma’s
E 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 Azure IoT Edge-modules ontwikkelen met Behulp van Visual Studio Code voor meer informatie over doelapparaatarchitecturen.

Windows

Windows-containers worden niet meer ondersteund. IoT Edge voor Linux in Windows is de aanbevolen manier om IoT Edge uit te voeren op Windows-apparaten.

Modulebeveiliging

U moet uw modules ontwikkelen met het oog op beveiliging. Zie Docker-beveiliging voor meer informatie over het beveiligen van uw modules.

IoT Edge schakelt standaard enkele containerfuncties uit om de beveiliging van modules te verbeteren. 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 is er een parameter met de naam allow_elevated_docker_permissions. Als deze vlag is ingesteld op waar, staat deze vlag de --privileged vlag en eventuele aanvullende mogelijkheden toe die u definieert in het CapAdd veld van Docker HostConfig in de opties voor het maken van containers.

Notitie

Deze vlag is momenteel standaard waar, waardoor implementaties bevoegde machtigingen kunnen verlenen aan modules. U wordt aangeraden deze vlag in te stellen 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 worden gebruikt om bestanden op het hostapparaat te beveiligen en mogelijk toegang te krijgen tot de hoofdmap.

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

Volgende stappen

Uw ontwikkel- en testomgeving voorbereiden voor IoT Edge

Azure IoT Edge-modules ontwikkelen met Visual Studio Code

Fouten opsporen in Azure IoT Edge-modules met Visual Studio Code

Azure IoT Hub SDK's leren kennen en gebruiken