Saját IoT Edge-modulok fejlesztése

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

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

IoT Edge futtatókörnyezet

Az 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 csomagolható IoT Edge-modulként. Az IoT Edge kommunikációs és felügyeleti funkcióinak teljes kihasználása érdekében egy modulban futó program az Azure IoT Device SDK használatával csatlakozhat a helyi IoT Edge-központhoz.

A program csomagolása IoT Edge-modulként

A program IoT Edge-eszközön való üzembe helyezéséhez először tárolóalapúnak kell lennie, és Docker-kompatibilis motorral kell futtatnia. Az IoT Edge a Docker mögötti nyílt forráskódú Moby-projektet használja Docker-kompatibilis motorként. A Dockerrel használt paraméterek átadhatók az IoT Edge-moduloknak. További információ: Tároló-létrehozási beállítások konfigurálása az IoT Edge-modulokhoz.

Az IoT Edge hub használata

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

Csatlakozás IoT Edge-központba egy modulból

A modulból a helyi IoT Edge-központba való Csatlakozás ugyanazokkal a csatlakozási lépésekkel jár, mint bármely ügyfél esetében. További információ: Csatlakozás az IoT Edge hubra.

Az IoT Edge-útválasztás AMQP-n keresztüli használatához használhatja a ModuleClientet az Azure IoT SDK-ból. Hozzon létre egy ModuleClient-példányt, amely csatlakoztatja a modult az eszközön futó IoT Edge hubhoz, hasonlóan ahhoz, ahogyan a DeviceClient-példányok IoT-eszközöket csatlakoztatnak az IoT Hubhoz. A ModuleClient osztályról és kommunikációs módszereiről további információt az előnyben részesített SDK-nyelv API-referenciájában talál: C#, C, Python, Java vagy Node.js.

IoT Hub-primitívek

Az IoT Hub az eszközhöz hasonló modulpéldányt lát. 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 az IoT Edge-központhoz, és IoT Hub-primitíveket használhat, ahogyan az IoT Hub eszközalkalmazással való használatakor tenné. Az 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

Az IoT Edge-modulok az IoT Edge-központon keresztül küldhetnek üzeneteket a felhőbe, 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 az IoT Edge-modul képes elfogni és feldolgozni a más modulok vagy eszközök által a helyi IoT Edge-központba küldött üzeneteket. Az IoT Edge modul ezután új üzeneteket küld feldolgozott adatokkal. IoT Edge-modulok láncai így létrehozhatók 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 az Azure IoT SDK modulügyfél-osztályát. Minden modul bemeneti és kimeneti végpontokkal rendelkezik.
  • A modul ügyfélosztályának üzenetküldési metódusával üzeneteket küldhet a modul kimeneti végpontján.
  • Állítson be egy útvonalat az eszköz edgeHub-moduljában a kimeneti végpont IoT Hubra való elküldéséhez.

Ü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 visszahívási függvényt az Azure IoT SDK aktiválja.
  • Dolgozza fel az üzenetet ezzel a visszahívási függvénnyel, és (opcionálisan) küldjön új üzeneteket a modulvégpont üzenetsorába.

Feljegyzés

Az útvonal deklarálásával kapcsolatos további információkért lásd : Modulok üzembe helyezése és útvonalak létrehozása az IoT Edge-ben

Ikrek

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

  • Ha ikermodult szeretne lekérni az Azure IoT SDK-val, hívja meg a metódust ModuleClient.getTwin .

  • Ha ikermodul-javítást szeretne kapni az Azure IoT SDK-val, implementáljon egy visszahívási függvényt, és regisztrálja azt az ModuleClient.moduleTwinCallback Azure IoT SDK metódusával, hogy a visszahívási függvény minden alkalommal aktiválódjon, amikor ikerjavítás érkezik.

Közvetlen metódusok fogadása

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

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

Az 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 nyelvek követelményeiről az IoT Edge fejlesztési és tesztelési környezetének előkészítése című témakörben olvashat bővebben.

Linux

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

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

Feljegyzés

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

Windows

A Továbbiakban nem támogatjuk a Windows-tárolókat. Az IoT Edge for Linux windowsos futtatása ajánlott módszer az IoT Edge windowsos eszközökön való futtatására.

Modulbiztonság

A modulokat a biztonság szem előtt tartásával kell fejlesztenie. A modulok biztonságossá tételével kapcsolatos további információkért lásd: Docker security.

A modulbiztonság javítása érdekében az IoT Edge alapértelmezés szerint 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

Az IoT Edge-eszközön lévő konfigurációs fájlban található egy úgynevezett allow_elevated_docker_permissionsparaméter. Ha igaz értékre van állítva, ez a jelölő engedélyezi a --privileged jelölőt és a tároló létrehozási beállításaiban a CapAdd Docker HostConfig mezőjében definiált további képességeket.

Feljegyzés

Ez a jelző jelenleg alapértelmezés szerint igaz, ami lehetővé teszi, hogy az üzemelő példányok emelt szintű engedélyeket adjanak a moduloknak. Javasoljuk, hogy állítsa ezt a jelzőt hamis értékre az eszközbiztonság javítása érdekében.

CAP_CHOWN és CAP_Standard kiadás TUID engedélyezése

Alapértelmezés szerint a Docker-képességek CAP_CHOWN és CAP_Standard kiadás TUID le vannak tiltva. Ezek a képességek a gazdagépen lévő fájlok védelmére és a gyökérhozzáférés elérésére használhatók.

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

Következő lépések

Fejlesztési és tesztelési környezet előkészítése az IoT Edge-hez

Azure IoT Edge-modulok fejlesztése a Visual Studio Code használatával

Azure IoT Edge-modulok hibakeresése a Visual Studio Code használatával

Az Azure IoT Hub SDK-k ismertetése és használata