Začínáme se správou zařízení (.NET)
Back-endové aplikace můžou používat Azure IoT Hub primitiv, jako jsou dvojčata zařízení a přímé metody, ke vzdálenému spouštění a monitorování akcí správy zařízení na zařízeních. V tomto článku se dozvíte, jak back-endová aplikace a aplikace zařízení spolupracují při zahájení a monitorování vzdáleného restartování zařízení pomocí IoT Hub.
Poznámka
Funkce popsané v tomto článku jsou dostupné jenom na standardní úrovni IoT Hub. Další informace o IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné IoT Hub úrovně pro vaše řešení.
Použijte přímou metodu k zahájení akcí správy zařízení (jako je 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 z 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í IoT Hub.
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á zařízení restartuje a hlásí čas posledního restartování. Přímé metody se volají z cloudu.
TriggerReboot: Konzolová aplikace .NET, která volá přímou metodu v aplikaci simulovaného zařízení prostřednictvím služby IoT Hub. Zobrazí odpověď a aktualizuje ohlášené vlastnosti.
Požadavky
Visual Studio
IoT Hub. Vytvořte ho pomocí rozhraní příkazového řádku nebo Azure Portal.
Registrované zařízení. Zaregistrujte si ho v Azure Portal.
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 v některých podnikových a vzdělávacích síťových prostředích blokovaný. Další informace a způsoby, jak tento problém obejít, najdete v tématu Připojení k 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 na dvojčata zařízení k identifikaci zařízení a jejich posledního restartování.
Aplikaci simulovaného zařízení vytvoříte takto:
Otevřete Visual Studio, vyberte Vytvořit nový projekt, najděte a vyberte šablonu projektu Konzolová aplikace (.NET Framework) a pak vyberte Další.
V části Konfigurace nového projektu pojmenujte projekt SimulateManagedDevice a pak vyberte Další.
Ponechte výchozí verzi rozhraní .NET Framework a pak vyberte Vytvořit.
V Průzkumník řešení klikněte pravým tlačítkem na nový projekt SimulateManagedDevice a pak vyberte Spravovat balíčky NuGet.
Vyberte Procházet a pak vyhledejte a vyberte Microsoft.Azure.Devices.Client. Vyberte Nainstalovat.
Tento krok stáhne, nainstaluje a přidá odkaz na balíček NuGet sady SDK pro zařízení Azure IoT a jeho závislosti.
Do horní části souboru Program.cs přidejte následující příkazy
using
:using Microsoft.Azure.Devices.Client; using Microsoft.Azure.Devices.Shared;
Do třídy Program přidejte následující pole.
{device connection string}
Zástupnou hodnotu nahraďte připojovacím řetězcem zařízení, který jste viděli při registraci zařízení v IoT Hub:static string DeviceConnectionString = "{device connection string}"; static DeviceClient Client = null;
Přidejte následující kód, který implementuje přímou metodu na zařízení:
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)); }
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); }
V Průzkumník řešení klikněte pravým tlačítkem na řešení a pak vyberte Nastavit projekty po spuštění.
V části Společné vlastnosti>Spouštěný projekt vyberte Jeden spouštěný projekt a pak vyberte projekt SimulateManagedDevice . Výběrem OK uložte změny.
Vyberte Sestavit>řešení sestavení.
Poznámka
Pro jednoduchost 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 v tématu Zpracování přechodných chyb.
Získání připojovacího řetězce služby IoT Hub
V tomto článku vytvoříte back-endovou službu, která na zařízení vyvolá přímou metodu. K vyvolání přímé metody na zařízení prostřednictvím IoT Hub potřebuje vaše služba oprávnění k připojení služby. Ve výchozím nastavení se každá IoT Hub vytvoří pomocí zásad sdíleného přístupu s názvem služba, která toto oprávnění uděluje.
Pokud chcete získat IoT Hub připojovací řetězec pro zásady služby, postupujte takto:
V 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ů.
V levém podokně centra IoT vyberte Zásady sdíleného přístupu.
V seznamu zásad vyberte zásadu služby .
Zkopírujte primární připojovací řetězec a uložte hodnotu .
Další informace o IoT Hub zásadách a oprávněních sdíleného přístupu najdete v tématu Řízení přístupu a oprávnění.
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 pomocí dotazů na dvojčata zařízení zjistí čas posledního restartování daného zařízení.
Otevřete Visual Studio a vyberte Vytvořit nový projekt.
V části Vytvořit nový projekt vyhledejte a vyberte šablonu projektu Konzolová aplikace (.NET Framework) a pak vyberte Další.
V části Configure your new project (Konfigurace nového projektu) pojmenujte projekt TriggerReboot a pak vyberte Next (Další).
Přijměte výchozí verzi rozhraní .NET Framework a pak výběrem možnosti Vytvořit vytvořte projekt.
V Průzkumník řešení klikněte pravým tlačítkem na projekt TriggerReboot a pak vyberte Spravovat balíčky NuGet.
Vyberte Procházet a pak vyhledejte a vyberte Microsoft.Azure.Devices. Vyberte Nainstalovat a nainstalujte 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.
Do horní části souboru Program.cs přidejte následující příkazy
using
:using Microsoft.Azure.Devices; using Microsoft.Azure.Devices.Shared;
Do třídy Program přidejte následující pole.
{iot hub connection string}
Nahraďte hodnotu zástupného symbolu připojovacím řetězcem IoT Hub, který jste zkopírovali dříve v tématu Získání připojovacího řetězce služby IoT Hub.static RegistryManager registryManager; static string connString = "{iot hub connection string}"; static ServiceClient client; static string targetDevice = "myDeviceId";
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()); }
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."); }
Nakonec přidejte do metody Main následující řádky:
registryManager = RegistryManager.CreateFromConnectionString(connString); StartReboot().Wait(); QueryTwinRebootReported().Wait(); Console.WriteLine("Press ENTER to exit."); Console.ReadLine();
Vyberte Sestavit>řešení sestavení.
Poznámka
Tento článek provádí pouze jeden dotaz na ohlášené vlastnosti zařízení. V produkčním kódu doporučujeme cyklické dotazování, aby se zjistily změny v ohlášených vlastnostech.
Spouštění aplikací
Teď jste připraveni spustit aplikace.
Pokud chcete spustit aplikaci zařízení SimulateManagedDevice .NET, klikněte v Průzkumník řešení pravým tlačítkem na projekt SimulateManagedDevice, vyberte Ladit a pak vyberte Spustit novou instanci. Aplikace by měla začít naslouchat voláním metod ze služby IoT Hub.
Po připojení zařízení a čekání na vyvolání metody klikněte pravým tlačítkem 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í, mezi které patří čas posledního restartování, zapsané v konzole TriggerReboot .
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í primitiv dvojčat zařízení a metod typu 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é intervaly údržby zařízení
Zařízení obvykle konfigurujete tak, aby prováděla akce v době, která minimalizuje 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 svou konfiguraci. Vaše back-endová řešení můžou pomocí požadovaných vlastností dvojčete zařízení definovat a aktivovat zásady, které umožňují časové období údržby. Když zařízení obdrží zásady časového období údržby, může pomocí ohlášené vlastnosti dvojčete zařízení nahlásit stav zásad. Back-endová aplikace pak může pomocí dotazů na dvojčata zařízení osvědčovat 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 dvojčete 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 Hub a zařízení, jako je kompletní aktualizace obrázků v aktualizaci zařízení pro Azure IoT Hub článek s využitím referenční image Raspberry Pi 3 B+.
Informace o tom, jak rozšířit řešení IoT a naplánovat volání metod na více zařízeních, najdete v tématu Plánování a vysílání úloh.