Začínáme se správou zařízení (.NET)

Back-endové aplikace můžou používat primitiva služby Azure IoT Hub, jako jsou dvojčata zařízení a přímé metody, ke vzdálenému spuštění a monitorování akcí správy zařízení na zařízeních. V tomto článku se dozvíte, jak může back-endová aplikace a aplikace zařízení spolupracovat na zahájení a monitorování vzdáleného restartování zařízení pomocí IoT Hubu.

Poznámka:

Funkce popsané v tomto článku jsou k dispozici pouze na úrovni Standard služby IoT Hub. Další informace o úrovních Služby IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné úrovně IoT Hubu pro vaše řešení.

Pomocí přímé metody iniciujte akce správy zařízení (například restartování, obnovení továrního nastavení a aktualizace firmwaru) z back-endové aplikace v cloudu. Zařízení zodpovídá za:

  • Zpracování požadavku metody odeslaného ze služby IoT Hub

  • Inicializování odpovídající akce specifické pro zařízení na zařízení

  • Poskytování aktualizací stavu prostřednictvím ohlášených vlastností do IoT Hubu

Pomocí back-endové aplikace v cloudu můžete spouštět dotazy dvojčete zařízení a hlásit průběh akcí správy zařízení.

V tomto článku se dozvíte, jak vytvořit:

  • SimulateManagedDevice: aplikace simulovaného zařízení s přímou metodou, která restartuje zařízení a hlásí čas posledního restartování. Přímé metody se vyvolávají z cloudu.

  • TriggerReboot: konzolová aplikace .NET, která volá přímou metodu v aplikaci simulovaného zařízení prostřednictvím centra IoT. Zobrazí odpověď a aktualizované ohlášené vlastnosti.

Požadavky

  • Visual Studio.

  • Centrum IoT ve vašem předplatném Azure Pokud centrum ještě nemáte, můžete postupovat podle kroků v tématu Vytvoření centra IoT.

  • Zařízení zaregistrované ve službě IoT Hub. Pokud ve službě IoT Hub nemáte zařízení, postupujte podle pokynů v části Registrace zařízení.

  • Ujistěte se, že je v bráně firewall otevřený port 8883. Ukázka zařízení v tomto článku používá protokol MQTT, který komunikuje přes port 8883. Tento port může být blokovaný v některých podnikových a vzdělávacích síťových prostředích. Další informace a způsoby řešení tohoto problému najdete v tématu Připojení ke službě IoT Hub (MQTT).

Vytvoření aplikace zařízení pomocí přímé metody

V této části:

  • Vytvořte konzolovou aplikaci .NET, která reaguje na přímou metodu volanou cloudem.

  • Aktivujte restartování simulovaného zařízení.

  • Pomocí ohlášených vlastností povolte dotazy dvojčete zařízení k identifikaci zařízení a k jejich poslednímu restartování.

Důležité

Tento článek obsahuje postup připojení zařízení pomocí sdíleného přístupového podpisu, označovaného také jako ověřování symetrického klíče. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování zařízení pomocí certifikátů X.509 je bezpečnější přístup. Další informace najdete v tématu Zabezpečení osvědčených postupů > zabezpečení připojení.

Pokud chcete vytvořit aplikaci simulovaného zařízení, postupujte takto:

  1. Otevřete Visual Studio a vyberte Vytvořit nový projekt, vyhledejte a vyberte šablonu projektu Konzolová aplikace (.NET Framework) a pak vyberte Další.

  2. V části Konfigurace nového projektu pojmenujte projekt SimulateManagedDevice a pak vyberte Další.

    Snímek obrazovky, který ukazuje, jak pojmenovat nový projekt sady Visual Studio

  3. Ponechte výchozí verzi rozhraní .NET Framework a pak vyberte Vytvořit.

  4. V Průzkumník řešení klikněte pravým tlačítkem myši na nový projekt SimulateManagedDevice a pak vyberte Spravovat balíčky NuGet.

  5. Vyberte Procházet, vyhledejte a vyberte Microsoft.Azure.Devices.Client. Vyberte volbu Instalovat.

    Snímek obrazovky, který ukazuje, jak nainstalovat balíček Microsoft.Azure.Devices.Client

    Tento krok stáhne, nainstaluje a přidá odkaz na balíček NuGet sady Sdk pro zařízení Azure IoT a jeho závislosti.

  6. Do horní části souboru Program.cs přidejte následující příkazy using:

    using Microsoft.Azure.Devices.Client;
    using Microsoft.Azure.Devices.Shared;
    
  7. Do třídy Program přidejte následující pole. {device connection string} Nahraďte zástupnou hodnotu připojovací řetězec zařízení, které jste viděli při registraci zařízení ve službě IoT Hub:

    static string DeviceConnectionString = "{device connection string}";
    static DeviceClient Client = null;
    
  8. Přidejte do zařízení následující příkaz, který implementuje přímou metodu:

    static Task<MethodResponse> onReboot(MethodRequest methodRequest, object userContext)
    {
        // In a production device, you would trigger a reboot 
        //   scheduled to start after this method returns.
        // For this sample, we simulate the reboot by writing to the console
        //   and updating the reported properties.
        try
        {
            Console.WriteLine("Rebooting!");
    
            // Update device twin with reboot time. 
            TwinCollection reportedProperties, reboot, lastReboot;
            lastReboot = new TwinCollection();
            reboot = new TwinCollection();
            reportedProperties = new TwinCollection();
            lastReboot["lastReboot"] = DateTime.Now;
            reboot["reboot"] = lastReboot;
            reportedProperties["iothubDM"] = reboot;
            Client.UpdateReportedPropertiesAsync(reportedProperties).Wait();
        }
        catch (Exception ex)
        {
            Console.WriteLine();
            Console.WriteLine("Error in sample: {0}", ex.Message);
        }
    
        string result = @"{""result"":""Reboot started.""}";
        return Task.FromResult(new MethodResponse(Encoding.UTF8.GetBytes(result), 200));
    }
    
  9. Nakonec do metody Main přidejte následující kód, který otevře připojení k centru IoT a inicializuje naslouchací proces metody:

    try
    {
        Console.WriteLine("Connecting to hub");
        Client = DeviceClient.CreateFromConnectionString(DeviceConnectionString, 
          TransportType.Mqtt);
    
        // setup callback for "reboot" method
        Client.SetMethodHandlerAsync("reboot", onReboot, null).Wait();
        Console.WriteLine("Waiting for reboot method\n Press enter to exit.");
        Console.ReadLine();
    
        Console.WriteLine("Exiting...");
    
        // as a good practice, remove the "reboot" handler
        Client.SetMethodHandlerAsync("reboot", null, null).Wait();
        Client.CloseAsync().Wait();
    }
    catch (Exception ex)
    {
        Console.WriteLine();
        Console.WriteLine("Error in sample: {0}", ex.Message);
    }
    
  10. V Průzkumník řešení klikněte pravým tlačítkem na řešení a pak vyberte Nastavit projekty po spuštění.

  11. V případě projektu spuštění společných vlastností>vyberte jeden spouštěný projekt a pak vyberte projekt SimulateManagedDevice. Kliknutím na TLAČÍTKO OK uložte provedené změny.

  12. Vyberte Sestavit>řešení.

Poznámka:

Aby bylo všechno jednoduché, tento článek neimplementuje žádné zásady opakování. V produkčním kódu byste měli implementovat zásady opakování (například exponenciální zpoždování), jak je navrženo při zpracování přechodných chyb.

Získání připojovací řetězec centra IoT

V tomto článku vytvoříte back-endovou službu, která vyvolá přímou metodu na zařízení. K vyvolání přímé metody na zařízení prostřednictvím IoT Hubu potřebuje vaše služba oprávnění k připojení ke službě. Ve výchozím nastavení se každá služba IoT Hub vytvoří pomocí zásady sdíleného přístupu s názvem služby , která toto oprávnění uděluje.

Pokud chcete získat připojovací řetězec ioT Hubu pro zásady služby, postupujte takto:

  1. Na webu Azure Portal vyberte skupiny prostředků. Vyberte skupinu prostředků, ve které se nachází vaše centrum, a pak vyberte centrum ze seznamu prostředků.

  2. V levém podokně centra IoT vyberte zásady sdíleného přístupu.

  3. V seznamu zásad vyberte zásadu služby .

  4. Zkopírujte primární připojovací řetězec a uložte hodnotu.

Snímek obrazovky znázorňující, jak načíst připojovací řetězec ze služby IoT Hub na webu Azure Portal

Další informace ozásadách

Vytvoření aplikace služby pro aktivaci restartování

V této části vytvoříte konzolovou aplikaci .NET pomocí jazyka C#, která zahájí vzdálené restartování zařízení pomocí přímé metody. Aplikace používá dotazy dvojčete zařízení ke zjištění času posledního restartování tohoto zařízení.

Důležité

Tento článek obsahuje postup připojení ke službě pomocí sdíleného přístupového podpisu. Tato metoda ověřování je vhodná pro testování a vyhodnocení, ale ověřování ve službě pomocí MICROSOFT Entra ID nebo spravovaných identit je bezpečnější přístup. Další informace najdete v tématu Osvědčené postupy > zabezpečení cloudu.

  1. Otevřete Visual Studio a vyberte Vytvořit nový projekt.

  2. V části Vytvořit nový projekt vyhledejte a vyberte šablonu projektu konzolové aplikace (.NET Framework) a pak vyberte Další.

  3. V části Konfigurace nového projektu pojmenujte TriggerReboot projektu a pak vyberte Další.

    Snímek obrazovky znázorňující, jak nakonfigurovat nový projekt sady Visual Studio

  4. Přijměte výchozí verzi rozhraní .NET Framework a pak vyberte Vytvořit a vytvořte projekt.

  5. V Průzkumník řešení klikněte pravým tlačítkem na projekt TriggerReboot a pak vyberte Spravovat balíčky NuGet.

  6. Vyberte Procházet, vyhledejte a vyberte Microsoft.Azure.Devices. Vyberte Nainstalovat a nainstalujte balíček Microsoft.Azure.Devices .

    Snímek obrazovky, který ukazuje, jak nainstalovat balíček Microsoft.Azure.Devices

    Tento krok stáhne, nainstaluje a přidá odkaz na balíček NuGet sdk služby Azure IoT a jeho závislosti.

  7. Do horní části souboru Program.cs přidejte následující příkazy using:

    using Microsoft.Azure.Devices;
    using Microsoft.Azure.Devices.Shared;
    
  8. Do třídy Program přidejte následující pole. {iot hub connection string} Nahraďte zástupnou hodnotu připojovací řetězec IoT Hub, kterou jste zkopírovali dříve v připojovací řetězec Get the IoT Hub.

    static RegistryManager registryManager;
    static string connString = "{iot hub connection string}";
    static ServiceClient client;
    static string targetDevice = "myDeviceId";
    
  9. Do třídy Program přidejte následující metodu. Tento kód získá dvojče zařízení pro restartování zařízení a vypíše ohlášené vlastnosti.

    public static async Task QueryTwinRebootReported()
    {
        Twin twin = await registryManager.GetTwinAsync(targetDevice);
        Console.WriteLine(twin.Properties.Reported.ToJson());
    }
    
  10. Do třídy Program přidejte následující metodu. Tento kód zahájí restartování zařízení pomocí přímé metody.

    public static async Task StartReboot()
    {
        client = ServiceClient.CreateFromConnectionString(connString);
        CloudToDeviceMethod method = new CloudToDeviceMethod("reboot");
        method.ResponseTimeout = TimeSpan.FromSeconds(30);
    
        CloudToDeviceMethodResult result = await 
          client.InvokeDeviceMethodAsync(targetDevice, method);
    
        Console.WriteLine("Invoked firmware update on device.");
    }
    
  11. Nakonec do metody Main přidejte následující řádky:

    registryManager = RegistryManager.CreateFromConnectionString(connString);
    StartReboot().Wait();
    QueryTwinRebootReported().Wait();
    Console.WriteLine("Press ENTER to exit.");
    Console.ReadLine();
    
  12. Vyberte Sestavit>řešení.

Poznámka:

Tento článek provádí pouze jeden dotaz na ohlášené vlastnosti zařízení. V produkčním kódu doporučujeme dotazovat se na zjištění změn v ohlášených vlastnostech.

Spouštění aplikací

Teď jste připraveni spustit aplikace.

  1. Pokud chcete spustit aplikaci Zařízení .NET SimulateManagedDevice, klikněte v Průzkumník řešení pravým tlačítkem myši na projekt SimulateManagedDevice, vyberte Ladit a pak vyberte Spustit novou instanci. Aplikace by měla začít naslouchat voláním metod z centra IoT.

  2. Po připojení zařízení a čekání na vyvolání metody klikněte pravým tlačítkem myši na projekt TriggerReboot , vyberte Ladit a pak vyberte Spustit novou instanci.

    Měli byste vidět restartování napsané v konzole SimulatedManagedDevice a ohlášené vlastnosti zařízení, které zahrnují čas posledního restartování napsaný v konzole TriggerReboot .

    Spuštění aplikace služby a zařízení

Přizpůsobení a rozšíření akcí správy zařízení

Vaše řešení IoT můžou rozšířit definovanou sadu vzorů správy zařízení nebo povolit vlastní vzory pomocí dvojčat zařízení a primitiv metod cloud-zařízení. Mezi další příklady akcí správy zařízení patří obnovení továrního nastavení, aktualizace firmwaru, aktualizace softwaru, řízení spotřeby, správa sítě a připojení a šifrování dat.

Časové období údržby zařízení

Obvykle konfigurujete zařízení tak, aby prováděla akce, které minimalizují přerušení a výpadky. Časové intervaly údržby zařízení se běžně používají k definování času, kdy má zařízení aktualizovat konfiguraci. Back-endová řešení můžou pomocí požadovaných vlastností dvojčete zařízení definovat a aktivovat zásadu na vašem zařízení, která umožňuje časové období údržby. Když zařízení obdrží zásadu časového období údržby, může pomocí ohlášené vlastnosti dvojčete zařízení nahlásit stav zásady. Back-endová aplikace pak může pomocí dotazů dvojčete zařízení otestovat dodržování předpisů u zařízení a jednotlivých zásad.

Další kroky

V tomto článku jste použili přímou metodu k aktivaci vzdáleného restartování zařízení. Pomocí ohlášených vlastností jste nahlásili čas posledního restartování ze zařízení a dotazovali jste se na dvojče zařízení, abyste zjistili čas posledního restartování zařízení z cloudu.

Pokud chcete pokračovat v začátcích se vzory správy ioT Hubu a zařízení, jako jsou kompletní aktualizace založené na imagích ve službě Device Update pro Azure IoT Hub, použijte referenční image Raspberry Pi 3 B+.

Informace o rozšíření řešení IoT a plánování volání metod na více zařízeních najdete v tématu Úlohy plánování a vysílání.