Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Použitelné pro:
IoT Edge 1.5
Důležité
IoT Edge 1.5 LTS je podporovaná verze. IoT Edge 1,4 LTS dosáhl konce životnosti 12. listopadu 2024. Pokud používáte starší verzi, přečtěte si téma Update IoT Edge.
Pomocí Azure Functions nasaďte kód, který spouští obchodní logiku přímo na zařízeních Azure IoT Edge. V tomto kurzu se dozvíte, jak vytvořit a nasadit funkci Azure, která filtruje data snímačů na simulovaném IoT Edge zařízení. Použijte simulované IoT Edge zařízení, které jste vytvořili v rychlých startech. V tomto kurzu se naučíte:
- Vytvoření funkce Azure pomocí Visual Studio Code
- Použití Visual Studio Code a Dockeru k vytvoření image Dockeru a jejímu publikování do registru kontejneru
- Nasazení modulu z registru kontejneru do zařízení IoT Edge
- Zobrazení filtrovaných dat
Funkce Azure, kterou v tomto kurzu vytvoříte, filtruje data o teplotě vygenerovaná zařízením. Funkce odesílá zprávy až do Azure IoT Hub, když teplota překročí zadanou prahovou hodnotu.
Pokud účet Azure nemáte, vytvořte si účet free než začnete.
Požadavky
Než začnete s tímto kurzem, nastavte vývojové prostředí pro vývoj kontejnerů Linuxu: Develop Azure IoT Edge moduly pomocí Visual Studio Code. Po dokončení máte splněné následující požadavky:
- Bezplatná nebo standardní úroveň IoT Hub v Azure.
- Zařízení AMD64 se spuštěným Azure IoT Edge s kontejnery Linuxu. Pomocí rychlého startu můžete nastavit zařízení Linux nebo zařízení Windows.
- Registr kontejneru, například Azure Container Registry.
- Nastavení Visual Studio Code s rozšířeními Azure IoT Edge a Azure IoT Hub. Nástroje Azure IoT Edge pro rozšíření Visual Studio Code jsou v režimu maintenance.
- Stáhněte a nainstalujte do vývojového počítače systém pro správu kontejnerů kompatibilní s Dockerem. Nastavte ho pro spouštění kontejnerů Linuxu.
Pokud chcete vyvíjet modul IoT Edge s Azure Functions, nainstalujte na svůj vývojový počítač tyto další požadavky:
Vytvořte projekt funkce
Azure IoT Edge pro Visual Studio Code poskytuje možnosti správy a šablony kódu. V této části použijete Visual Studio Code k vytvoření IoT Edge řešení s funkcí Azure.
Vytvoření nového projektu
Při vytváření přizpůsobitelné šablony řešení funkcí jazyka C# postupujte podle těchto kroků.
Otevřete Visual Studio Code na vývojovém počítači.
Otevřete paletu příkazů Visual Studio Code tak, že vyberete View > Paleta příkazů.
Na paletě příkazů přidejte a spusťte příkaz Azure IoT Edge: Nové řešení IoT Edge. Při vytváření řešení postupujte podle těchto výzev na paletě příkazů:
- Vyberte složku: Zvolte umístění na vývojovém počítači pro Visual Studio Code a vytvořte soubory řešení.
- Zadejte název řešení: přidejte popisný název řešení, například FunctionSolution, nebo přijměte výchozí hodnotu.
- Vyberte šablonu modulu: zvolte Azure Functions – C#.
- Zadejte název modulu: pojmenujte modul CSharpFunction.
- Zadejte úložiště imagí Dockeru pro modul: úložiště imagí obsahuje název vašeho registru kontejneru a název image kontejneru. Portál automaticky naplní obraz kontejneru z posledního kroku. Nahraďte localhost:5000 hodnotou serveru Login z registru kontejneru Azure. Server Login můžete načíst ze stránky Overview registru kontejneru na portálu Azure Portal. Konečný řetězec vypadá takto
<registry name>.azurecr.io/csharpfunction.
Přidání přihlašovacích údajů registru
Soubor prostředí ve vašem řešení ukládá přihlašovací údaje pro registr kontejneru a sdílí je s modulem runtime IoT Edge. Modul runtime tyto přihlašovací údaje potřebuje k načtení privátních imagí do vašeho IoT Edge zařízení.
Rozšíření IoT Edge v Visual Studio Code se pokusí načíst přihlašovací údaje registru kontejneru z Azure a naplnit je v souboru prostředí. Zkontrolujte, jestli už jsou vaše přihlašovací údaje v souboru. Pokud ne, přidejte je teď:
- V průzkumníku Visual Studio Code otevřete soubor .env.
- Aktualizujte pole hodnotami username a password, které jste zkopírovali z registru kontejneru Azure. Pokud je chcete znovu najít, přejděte do registru kontejneru v Azure a na stránce Settings > Přístupové klíče.
- Soubor uložte.
Poznámka:
Tento kurz používá přihlašovací údaje správce pro Azure Container Registry, které jsou vhodné pro scénáře vývoje a testování. V produkčním prostředí použijte možnost ověřování s nejnižšími oprávněními, jako jsou služební principály. Další informace najdete v tématu Správa přístupu k registru kontejneru.
Nastavení cílové architektury na AMD64
Azure Functions moduly na IoT Edge jsou podporovány pouze v kontejnerech založených na Linuxu AMD64. Výchozí cílová architektura pro Visual Studio Code je Linux AMD64, ale tady ji můžete explicitně nastavit na Linux AMD64.
- Otevřete paletu příkazů a vyhledejte Azure IoT Edge: Nastavit výchozí cílovou platformu pro řešení Edge.
- Na paletě příkazů vyberte cílovou architekturu AMD64 ze seznamu možností.
Aktualizace modulu pomocí vlastního kódu
Přidejte kód tak, aby modul CSharpFunction zpracovává zprávy na okraji, než je přeposílá do IoT Hub.
V průzkumníku Visual Studio Code otevřete modules > CSharpFunction > CSharpFunction.cs.
Obsah souboru CSharpFunction.cs nahraďte následujícím kódem. Tento kód přijímá telemetrii o okolní teplotě a teplotě počítače a předává zprávu IoT Hub pouze v případě, že teplota počítače překročí definovanou prahovou hodnotu.
using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Devices.Client; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.EdgeHub; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; namespace Functions.Samples { public static class CSharpFunction { [FunctionName("CSharpFunction")] public static async Task FilterMessageAndSendMessage( [EdgeHubTrigger("input1")] Message messageReceived, [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output, ILogger logger) { const int temperatureThreshold = 20; byte[] messageBytes = messageReceived.GetBytes(); var messageString = System.Text.Encoding.UTF8.GetString(messageBytes); if (!string.IsNullOrEmpty(messageString)) { logger.LogInformation("Info: Received one non-empty message"); // Get the body of the message and deserialize it. var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString); if (messageBody != null && messageBody.machine.temperature > temperatureThreshold) { // Send the message to the output as the temperature value is greater than the threshold. using (var filteredMessage = new Message(messageBytes)) { // Copy the properties of the original message into the new Message object. foreach (KeyValuePair<string, string> prop in messageReceived.Properties) {filteredMessage.Properties.Add(prop.Key, prop.Value);} // Add a new property to the message to indicate it is an alert. filteredMessage.Properties.Add("MessageType", "Alert"); // Send the message. await output.AddAsync(filteredMessage); logger.LogInformation("Info: Received and transferred a message with temperature above the threshold"); } } } } } //Define the expected schema for the body of incoming messages. class MessageBody { public Machine machine {get; set;} public Ambient ambient {get; set;} public string timeCreated {get; set;} } class Machine { public double temperature {get; set;} public double pressure {get; set;} } class Ambient { public double temperature {get; set;} public int humidity {get; set;} } }Uložte soubor.
Sestavení a nasazení IoT Edge řešení
V předchozí části jste vytvořili řešení IoT Edge a změnili jste CSharpFunction tak, aby odfiltrovat zprávy s hlášenými teplotami počítače pod přijatelnou prahovou hodnotou. Teď vytvořte řešení jako image kontejneru a nasdílejte ho do registru kontejneru.
Otevřete integrovaný terminál Visual Studio Code. Vyberte Zobrazit > terminál.
Přihlaste se k Dockeru v terminálu. Použijte uživatelské jméno, heslo a ověřovací server z registru kontejneru Azure. Tyto hodnoty získáte v části Access keys oddílu vašeho registru na portálu Azure.
docker login -u <ACR username> -p <ACR password> <ACR login server>Může se zobrazit upozornění zabezpečení, které doporučuje použití
--password-stdin. I když se tento osvědčený postup doporučuje pro produkční scénáře, je mimo rozsah tohoto kurzu. Další informace najdete v referenčních informacích k přihlášení dockeru .V průzkumníku Visual Studio Code klikněte pravým tlačítkem myši na soubor deployment.template.json a vyberte Build and Push IoT Edge Solution.
Příkaz sestavení a odeslání spustí tři operace. Nejprve vytvoří v řešení novou složku s názvem config , která obsahuje úplný manifest nasazení, který je sestavený ze šablony nasazení a dalších souborů řešení. Za druhé, se spustí
docker build, aby se image kontejneru sestavila na základě příslušného Dockerfile pro vaši cílovou architekturu. Potom se spustídocker pushpro nahrání úložiště obrazů do registru kontejneru.Tento proces může trvat několik minut poprvé, ale při příštím spuštění příkazů je rychlejší.
Zobrazit obrázek kontejneru
Visual Studio Code zobrazí zprávu o úspěchu při odeslání obrazu kontejneru do registru kontejnerů. Pokud chcete operaci potvrdit, zobrazte image v registru.
- Na portálu Azure přejděte do registru kontejneru Azure.
- Vyberte Služby> Úložiště.
- V seznamu se zobrazí úložiště csharpfunction . Výběrem tohoto úložiště zobrazíte další podrobnosti.
- V části Značky se zobrazí značka 0.0.1-amd64 . Tato značka zobrazuje verzi a platformu image, kterou jste vytvořili. Soubor module.json ve složce CSharpFunction nastaví tyto hodnoty.
Nasazení a spuštění řešení
Pomocí portálu Azure nasaďte modul Function do IoT Edge zařízení tak, jako v rychlém startu. Moduly můžete také nasadit a monitorovat z Visual Studio Code. Následující části používají Azure IoT Edge a IoT Hub pro rozšíření Visual Studio Code uvedená v požadavcích. Pokud jste to ještě neudělali, nainstalujte rozšíření.
V průzkumníku Visual Studio Code v části Azure IoT Hub rozbalte Devices, abyste mohli zobrazit seznam zařízení IoT.
Klikněte pravým tlačítkem myši na název zařízení IoT Edge a vyberte Vytvořit nasazení pro jedno zařízení.
Přejděte do složky řešení, která obsahuje CSharpFunction. Otevřete konfigurační složku, vyberte soubor deployment.amd64.json a poté zvolte Vybrat manifest nasazení Edge.
V zařízení rozbalte moduly a zobrazte seznam nasazených a spuštěných modulů. Vyberte tlačítko aktualizovat. Nový CSharpFunction můžete zobrazit společně s modulem SimulatedTemperatureSensor , $edgeAgent a $edgeHub.
Zobrazení nových modulů může chvíli trvat. Zařízení IoT Edge načte nové informace o nasazení z IoT Hub, spustí nové kontejnery a poté nahlásí stav zpět do IoT Hub.
Zobrazení vygenerovaných dat
Všechny zprávy, které přicházejí do centra IoT z vašich zařízení, můžete zobrazit spuštěním příkazu Azure IoT Hub: Spustit monitorování integrovaného koncového bodu událostí na paletě příkazů. Pokud chcete monitorování zpráv zastavit, spusťte na paletě příkazů Azure IoT Hub: Zastavit monitorování předdefinovaných koncových bodů událostí.
Pokud chcete vyfiltrovat zobrazení a zobrazit zprávy z konkrétního zařízení, klikněte pravým tlačítkem myši na zařízení v části Azure IoT Hub > Zařízení průzkumníka Visual Studio Code a vyberte Start Monitoring Built-in Event Endpoint.
Vyčištění prostředků
Pokud máte v plánu pokračovat k dalšímu doporučenému článku, ponechte prostředky a konfigurace, které jste vytvořili, a znovu je použijte. Můžete také dál používat stejné IoT Edge zařízení jako testovací zařízení.
Jinak odstraňte místní konfiguraci a prostředky Azure, které jste vytvořili v tomto článku, abyste se vyhnuli poplatkům.
Odstraňte prostředky Azure
Odstranění prostředků a skupin prostředků v Azure nelze vrátit zpět. Dávejte pozor, abyste nechtěně neodstranili nesprávnou skupinu prostředků nebo jednotlivé prostředky. Pokud jste vytvořili IoT Hub uvnitř existující skupiny prostředků, která obsahuje prostředky, které chcete zachovat, odstraňte pouze samotný IoT Hub prostředek, nikoli skupinu prostředků.
Chcete-li odstranit prostředky:
- Přihlaste se k portálu Azure a vyberte Sourcové skupiny.
- Vyberte název skupiny prostředků, která obsahuje vaše IoT Edge testovací prostředky.
- Zkontrolujte seznam prostředků, které vaše skupina prostředků obsahuje. Pokud chcete odstranit všechny prostředky, můžete vybrat možnost Odstranit skupinu prostředků. Pokud chcete odstranit jenom některé z nich, vyberte jednotlivé prostředky, abyste je odstranili jednotlivě.
Další kroky
V tomto kurzu jste vytvořili modul funkce Azure s kódem pro filtrování nezpracovaných dat generovaných vaším zařízením IoT Edge.
Pokračujte k dalším výukám, kde se dozvíte další způsoby, jak vám Azure IoT Edge může pomoci převést data na obchodní přehledy v okrajovém prostředí.