Sdílet prostřednictvím


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í.

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í.

  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 práce se službou IoT Hub a vzory správy 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í.