Vývoj vlastních modulů IoT Edge

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Moduly Azure IoT Edge se můžou připojit k dalším službám Azure a přispět k vašemu většímu datovému kanálu cloudu. Tento článek popisuje, jak vyvíjet moduly pro komunikaci s modulem runtime IoT Edge a Službou IoT Hub, a tedy se zbytkem cloudu Azure.

Prostředí modulu runtime IoT Edge

Modul runtime IoT Edge poskytuje infrastrukturu pro integraci funkcí více modulů IoT Edge a jejich nasazení na zařízení IoT Edge. Jakýkoli program je možné zabalit jako modul IoT Edge. Pokud chcete plně využít výhod funkcí komunikace a správy IoT Edge, může program spuštěný v modulu použít sadu SDK pro zařízení Azure IoT k připojení k místnímu centru IoT Edge.

Zabalení programu jako modulu IoT Edge

Pokud chcete program nasadit na zařízení IoT Edge, musíte ho nejprve kontejnerizovat a spustit s modulem kompatibilním s Dockerem. IoT Edge používá jako modul kompatibilní s Dockerem opensourcový projekt Moby. Stejné parametry, na které jste zvyklí s Dockerem, je možné předat modulům IoT Edge. Další informace najdete v tématu Konfigurace možností vytváření kontejnerů pro moduly IoT Edge.

Použití centra IoT Edge

Centrum IoT Edge poskytuje dvě hlavní funkce: proxy server pro IoT Hub a místní komunikaci.

Připojení z modulu do centra IoT Edge

Připojení do místního centra IoT Edge z modulu zahrnuje stejné kroky připojení jako pro všechny klienty. Další informace najdete v tématu Připojení do centra IoT Edge.

Pokud chcete použít směrování IoT Edge přes AMQP, můžete použít ModuleClient ze sady Azure IoT SDK. Vytvořte instanci ModuleClient pro připojení modulu k centru IoT Edge spuštěného na zařízení, podobně jako instance DeviceClient připojují zařízení IoT ke službě IoT Hub. Další informace o třídě ModuleClient a jejích komunikačních metodách najdete v referenčních informacích k rozhraní API pro preferovaný jazyk sady SDK: C#, C, C, Python, Java nebo Node.js.

Primitiva ioT Hubu

IoT Hub vidí instanci modulu podobně jako zařízení. Instance modulu může:

Moduly v současné době nemůžou přijímat zprávy typu cloud-zařízení nebo používat funkci nahrávání souborů.

Při psaní modulu se můžete připojit k centru IoT Edge a používat primitiva IoT Hubu stejně jako při použití IoT Hubu s aplikací zařízení. Jediným rozdílem mezi moduly IoT Edge a aplikacemi zařízení IoT je, že s moduly, které musíte místo identity zařízení odkazovat na identitu modulu.

Zprávy typu zařízení-cloud

Modul IoT Edge může odesílat zprávy do cloudu prostřednictvím centra IoT Edge, které funguje jako místní zprostředkovatel a šíří zprávy do cloudu. Aby bylo možné povolit komplexní zpracování zpráv typu zařízení-cloud, může modul IoT Edge zachytit a zpracovávat zprávy odeslané jinými moduly nebo zařízeními do místního centra IoT Edge. Modul IoT Edge pak odešle nové zprávy se zpracovanými daty. Řetězy modulů IoT Edge je tedy možné vytvořit pro vytváření místních kanálů zpracování.

Odesílání zpráv telemetrie zařízení-cloud pomocí tras:

  • Použijte klientskou třídu modulu sady Azure IoT SDK. Každý modul má vstupní a výstupní koncové body.
  • K odesílání zpráv do výstupního koncového bodu modulu modulu použijte metodu odesílání zpráv z klientské třídy modulu.
  • Nastavte trasu v modulu EdgeHub vašeho zařízení, aby se tento výstupní koncový bod odeslal do IoT Hubu.

Zpracování zpráv pomocí tras:

  • Nastavte trasu pro odesílání zpráv přicházejících z jiného koncového bodu (modulu nebo zařízení) do vstupního koncového bodu modulu.
  • Poslouchejte zprávy na vstupním koncovém bodu modulu. Pokaždé, když se nová zpráva vrátí, aktivuje funkce zpětného volání sadu Azure IoT SDK.
  • Zpracovat zprávu pomocí této funkce zpětného volání a (volitelně) odesílat nové zprávy ve frontě koncového bodu modulu.

Poznámka:

Další informace o deklarování trasy najdete v tématu Nasazení modulů a vytvoření tras ve službě IoT Edge.

Dvojčata

Dvojčata jsou jedním z primitiv poskytovaných službou IoT Hub. Existují dokumenty JSON, které ukládají informace o stavu, včetně metadat, konfigurací a podmínek. Každý modul nebo zařízení má vlastní dvojče.

  • Pokud chcete získat dvojče modulu se sadou Azure IoT SDK, zavolejte metodu ModuleClient.getTwin .

  • Pokud chcete získat opravu dvojčete modulu pomocí sady Azure IoT SDK, implementujte funkci zpětného volání a zaregistrujte ji pomocí ModuleClient.moduleTwinCallback metody ze sady Azure IoT SDK, aby se funkce zpětného volání aktivovala pokaždé, když přijde oprava dvojčete.

Příjem přímých metod

Pokud chcete získat přímou metodu pomocí sady Azure IoT SDK, implementujte funkci zpětného volání a zaregistrujte ji v ModuleClient.methodCallback sadě Azure IoT SDK, aby se funkce zpětného volání aktivovala pokaždé, když přijde přímá metoda.

Podpora jazyka a architektury

IoT Edge podporuje více operačních systémů, architektur zařízení a vývojových jazyků, abyste mohli vytvořit scénář, který odpovídá vašim potřebám. V této části se seznamte s možnostmi vývoje vlastních modulů IoT Edge. Další informace o podpoře a požadavcích na nástroje pro každý jazyk najdete v tématu Příprava vývojového a testovacího prostředí pro IoT Edge.

Linux

Pro všechny jazyky v následující tabulce podporuje IoT Edge vývoj pro kontejnery AMD64 a většinu kontejnerů ARM64 Linux. K dispozici je také podpora pro kontejnery ARM 11 ARM32.

Vývojový jazyk Vývojářské nástroje
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

Poznámka:

Pro kompilaci mezi platformami, jako je kompilace modulu ARM32 IoT Edge na vývojovém počítači AMD64, musíte nakonfigurovat vývojový počítač tak, aby kompiloval kód v architektuře cílového zařízení odpovídající modulu IoT Edge. Další informace o architekturách cílových zařízení najdete v tématu Vývoj modulů Azure IoT Edge pomocí editoru Visual Studio Code.

Windows

Kontejnery Windows už nepodporujeme. IoT Edge pro Linux ve Windows se doporučuje spustit IoT Edge na zařízeních s Windows.

Zabezpečení modulu

Moduly byste měli vyvíjet s ohledem na zabezpečení. Další informace o zabezpečení modulů najdete v tématu Zabezpečení Dockeru.

Aby se zlepšilo zabezpečení modulů, IoT Edge ve výchozím nastavení zakáže některé funkce kontejneru. Výchozí hodnoty můžete přepsat tak, aby v případě potřeby poskytovaly privilegované funkce modulům.

Povolit zvýšená oprávnění Dockeru

V konfiguračním souboru na zařízení IoT Edge existuje parametr s názvem allow_elevated_docker_permissions. Pokud je nastavená hodnota true, tento příznak umožňuje --privileged příznak a všechny další možnosti, které definujete v CapAdd poli Docker HostConfig v možnostech vytvoření kontejneru.

Poznámka:

V současné době platí tento příznak ve výchozím nastavení, který umožňuje nasazením udělit privilegovaná oprávnění modulům. Doporučujeme nastavit tento příznak na false, aby se zlepšilo zabezpečení zařízení.

Povolení CAP_CHOWN a CAP_SETUID

Funkce Dockeru CAP_CHOWN a CAP_SETUID jsou ve výchozím nastavení zakázané. Tyto funkce se dají použít k zápisu do zabezpečených souborů na hostitelském zařízení a potenciálně k získání kořenového přístupu.

Pokud tyto funkce potřebujete, můžete je ručně znovu povolit pomocí CapADD v možnostech vytvoření kontejneru.

Další kroky

Příprava vývojového a testovacího prostředí pro IoT Edge

Vývoj modulů Azure IoT Edge pomocí editoru Visual Studio Code

Ladění modulů Azure IoT Edge pomocí editoru Visual Studio Code

Principy a použití sad SDK služby Azure IoT Hub.