Megosztás a következőn keresztül:


Saját IoT Edge modulok fejlesztése

A következőre vonatkozik:IoT Edge 1.5 jelölés IoT Edge 1.5

Fontos

IoT Edge 1.5 LTS a támogatott kiadás. IoT Edge 1,4 LTS 2024. november 12-én véget ért. Ha korábbi kiadást használ, tekintse meg a Update IoT Edge című témakört.

Azure IoT Edge modulok más Azure szolgáltatásokkal is csatlakozhatnak, és hozzájárulhatnak a nagyobb felhőbeli adatfolyamathoz. Ez a cikk azt ismerteti, hogyan fejleszthet modulokat a IoT Edge futtatókörnyezettel és a IoT Hub, és így a többi Azure felhővel való kommunikációhoz.

IoT Edge futtatókörnyezet

A IoT Edge futtatókörnyezet biztosítja az infrastruktúrát több IoT Edge modul funkcióinak integrálásához és IoT Edge eszközökre való üzembe helyezéséhez. Bármely program IoT Edge modulként csomagolható. A IoT Edge kommunikációs és felügyeleti funkciók teljes kihasználásához egy modulban futó program a Azure IoT Eszköz SDK-val csatlakozhat a helyi IoT Edge központhoz.

A program csomagolása IoT Edge modulként

Ha IoT Edge eszközön szeretné telepíteni a programot, először tárolóba kell helyeznie, és docker-kompatibilis motorral kell futtatnia. IoT Edge Moby, a Docker mögötti nyílt forráskódú projektet használja Docker-kompatibilis motorként. A Dockerrel használt paramétereket átadhatja a IoT Edge-moduloknak. További információ: Az IoT Edge modulok tároló-létrehozási beállításainak konfigurálása.

Az IoT Edge hub használata

Az IoT Edge hub két fő funkciót biztosít: egy proxyt az IoT Hubhoz és a helyi kommunikációt.

Csatlakozás IoT Edge központhoz egy modulból

A helyi IoT Edge központhoz való csatlakozás egy modulból ugyanazokkal a csatlakozási lépésekkel jár, mint bármely ügyfél esetében. További információ: Kapcsolódás a IoT Edge központhoz.

IoT Edge amqp-en keresztüli útválasztás használatához használhatja az Azure IoT SDK-t. Hozzon létre egy ModuleClient-példányt a modulnak, amely a modult csatlakoztatja az eszközön futó IoT Edge központhoz, hasonlóan ahhoz, ahogyan a DeviceClient példányok csatlakoztatják az IoT-eszközöket az IoT Hubhoz. A ModuleClient osztályról és kommunikációs módszereiről további információt talál az API-referenciákban a preferált SDK nyelv API-referenciájában: C#, C, Python, Java vagy Node.js.

IoT Hub primitívek

IoT Hub egy modulpéldányt az eszközhöz hasonlónak tekint. A modulpéldányok a következőkre képesek:

A modulok jelenleg nem fogadhatnak felhőből eszközre irányuló üzeneteket, és nem használhatják a fájlfeltöltési funkciót.

Modul írásakor csatlakozhat a IoT Edge központhoz, és IoT Hub primitíveket használhat, ahogyan az eszközalkalmazásokkal való IoT Hub használatakor tenné. A IoT Edge modulok és az IoT-eszközalkalmazások közötti egyetlen különbség az, hogy a modulokkal az eszközidentitás helyett a modulidentitásra kell hivatkoznia.

Az eszközről a felhőbe irányuló üzenetek

Egy IoT Edge modul üzeneteket küldhet a felhőbe a IoT Edge központon keresztül, amely helyi közvetítőként működik, és üzeneteket propagálja a felhőbe. Az eszközről a felhőbe irányuló üzenetek összetett feldolgozásának lehetővé tétele érdekében egy IoT Edge modul képes elfogni és feldolgozni a más modulok vagy eszközök által a helyi IoT Edge hubra küldött üzeneteket. A IoT Edge modul ezután új üzeneteket küld feldolgozott adatokkal. Ily módon IoT Edge modulok láncait hozhatja létre helyi feldolgozási folyamatok létrehozásához.

Eszközről felhőbe irányuló telemetriai üzenetek küldése útvonalak használatával:

  • Használja a ModuleClient osztályát. Minden modul bemeneti és kimeneti végpontokkal rendelkezik.
  • Ha üzeneteket szeretne küldeni a modul kimeneti végpontján, használjon egy üzenetküldési módszert az ModuleClient osztályból.
  • A kimeneti végpont IoT Hub való elküldéséhez állítson be egy útvonalat az eszköz edgeHub moduljában.

Üzenetek feldolgozása útvonalak használatával:

  • Állítson be egy útvonalat, amely egy másik végpontról (modulból vagy eszközről) érkező üzeneteket küld a modul bemeneti végpontjára.
  • Figyelje meg a modul bemeneti végpontján lévő üzeneteket. Minden alkalommal, amikor egy új üzenet visszatér, a Azure IoT SDK elindít egy visszahívási függvényt.
  • Dolgozza fel az üzenetet ezzel a visszahívási függvénnyel, és (opcionálisan) küldjön új üzeneteket a modulvégpont-üzenetsorba.

Megjegyzés

Az útvonal deklarálásával kapcsolatos további információkért lásd: A modulok üzembe helyezésének és az útvonalak IoT Edge-ben való létrehozásáról.

Ikrek

Twins az IoT Hub által biztosított primitívek egyike. Az ikerpéldányok olyan JSON-dokumentumok, amelyek állapotinformációkat tárolnak, beleértve a metaadatokat, a konfigurációt és a feltételeket. Minden modulnak vagy eszköznek saját ikerpéldánya van.

  • Ha ikermodult szeretne lekérni a Azure IoT SDK használatával, hívja meg a ModuleClient.getTwin metódust.
  • Ha a Azure IoT SDK használatával szeretne kapni egy ikermodul-javítást, implementáljon egy visszahívási függvényt, és regisztrálja azt a ModuleClient.moduleTwinCallback metódussal, hogy a visszahívási függvény minden alkalommal aktiválódjon, amikor ikerjavítás érkezik.

Közvetlen módszerek fogadása

Ha közvetlen metódust szeretne kapni a Azure IoT SDK használatával, implementáljon egy visszahívási függvényt, és regisztrálja azt a ModuleClient.methodCallback metódussal, hogy a visszahívási függvény minden alkalommal aktiválódjon, amikor egy közvetlen metódus bejön.

Nyelvi és architektúra-támogatás

IoT Edge több operációs rendszert, eszközarchitektúrát és fejlesztési nyelvet támogat, így az igényeinek megfelelő forgatókönyvet hozhat létre. Ebben a szakaszban megismerheti az egyéni IoT Edge modulok fejlesztésének lehetőségeit. Az eszköztámogatásról és az egyes nyelvekre vonatkozó követelményekről a A fejlesztési és tesztelési környezet előkészítése IoT Edge.

Linux

Az alábbi táblázatban szereplő összes nyelv esetében az IoT Edge támogatja a fejlesztést AMD64 és a legtöbb ARM64 Linux-tároló esetében. A Debian 11 ARM32-tárolókat is támogatja.

Fejlesztési nyelv Fejlesztési eszközök
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

Megjegyzés

Platformfüggetlen fordításhoz, például egy ARM32 IoT Edge modul amd64 fejlesztői gépen való összeállításához konfigurálnia kell a fejlesztőgépet úgy, hogy a IoT Edge modulnak megfelelő kódokat fordítson le a céleszköz-architektúrára. További információ a céleszköz-architektúrákról: Tutorial: Azure IoT Edge-modulok fejlesztése Visual Studio Code használatával.

Windows

A Microsoft már nem támogatja Windows tárolókat. IoT Edge linuxos Windows a IoT Edge Windows eszközökön való futtatásának ajánlott módja.

Modulbiztonság

A modulokat a biztonság szem előtt tartásával fejlesztheti. A modulok biztonságossá tételéről további információt a Docker Engine biztonságával kapcsolatban talál.

A modul biztonságának javítása érdekében alapértelmezés szerint IoT Edge letilt néhány tárolófunkciót. Szükség esetén felülbírálhatja az alapértelmezett értékeket, hogy emelt szintű képességeket biztosítson a modulok számára.

Emelt szintű Docker-engedélyek engedélyezése

Egy IoT Edge eszköz konfigurációs fájljában egy allow_elevated_docker_permissions nevű paraméter szabályozza a docker emelt szintű engedélyeit. Ha igaz értékre van állítva, ez a jelölő megadja a --privileged jelölőt és a CapAdd a Docker HostConfig mezőjében definiált egyéb képességeket.

Megjegyzés

Ez a jelző jelenleg alapértelmezés szerint igaz, ami kiváltságos jogosultságokat biztosít a telepítésekre. Állítsa ezt a jelzőt hamis értékre az eszközbiztonság javítása érdekében.

CAP_CHOWN és CAP_SETUID engedélyezése

A Docker képességei közül a CAP_CHOWN és a CAP_SETUID alapértelmezés szerint le vannak tiltva. Ezek a képességek írhatnak a gazdagépen lévő biztonságos fájlokba, és potenciálisan rendszergazdai hozzáféréshez juthatnak.

Ha szüksége van ezekre a képességekre, manuálisan engedélyezze újra őket a tároló létrehozási beállításainak használatával CapADD .

Következő lépések

  • A fejlesztési és tesztelési környezet előkészítése IoT Edge
  • Tutorial: Azure IoT Edge-modulok fejlesztése Visual Studio Code
  • Modulok hibakeresése Azure IoT Edge Visual Studio Code
  • Azure IoT Hub SDK-k