Začínáme se správou zařízení (Azure CLI)

Back-endové aplikace můžou pomocí Azure IoT Hub primitiv, jako jsou dvojčata zařízení a přímé metody, vzdáleně spouštět a monitorovat akce správy zařízení na zařízeních. V tomto článku se dozvíte, jak můžou Azure CLI a zařízení spolupracovat při vyvolání přímé metody pro zařízení pomocí IoT Hub.

Poznámka

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

K zahájení akcí správy zařízení (jako je restartování, obnovení továrního nastavení a aktualizace firmwaru) z relace Azure CLI použijte přímou metodu. 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í Azure CLI můžete spouštět dotazy dvojčat zařízení a hlásit tak průběh akcí správy zařízení. Další informace o používání přímých metod najdete v pokynech ke komunikaci z cloudu do zařízení.

V tomto článku se dozvíte, jak vytvořit dvě relace Azure CLI:

  • Relace, která vytvoří simulované zařízení. Simulované zařízení je nakonfigurované tak, aby vracelo stavový kód a datovou část JSON při vyvolání jakékoli přímé metody.

  • Relace, která vyvolá přímou metodu na simulovaném zařízení vytvořeném v jiné relaci.

Požadavky

  • Azure CLI Příkazy v tomto článku můžete také spustit pomocí prostředí Azure Cloud Shell, interaktivního prostředí rozhraní příkazového řádku, které běží ve vašem prohlížeči nebo v aplikaci, jako je Terminál Windows. Pokud používáte Cloud Shell, nemusíte nic instalovat. Pokud dáváte přednost místnímu používání rozhraní příkazového řádku, tento článek vyžaduje Azure CLI verze 2.36 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud chcete místně nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI.

  • Centrum IoT. Vytvořte ho pomocí rozhraní příkazového řádku nebo 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).

Příprava Cloud Shell

Pokud chcete používat azure Cloud Shell, musíte ji nejprve spustit a nakonfigurovat. Pokud používáte rozhraní příkazového řádku místně, přejděte k části Příprava dvou relací rozhraní příkazového řádku .

  1. V záhlaví stránky v Azure Portal vyberte ikonu Cloud Shell.

    Snímek obrazovky globálních ovládacích prvků ze záhlaví stránky Azure Portal se zvýrazněnou ikonou Cloud Shell

    Poznámka

    Pokud Cloud Shell používáte poprvé, zobrazí se výzva k vytvoření úložiště, které je potřeba k použití Cloud Shell. Vyberte předplatné, abyste vytvořili účet úložiště, a sdílenou složku služby Microsoft Azure Files.

  2. Pomocí selektoru prostředí na panelu nástrojů Cloud Shell vyberte upřednostňované prostředí rozhraní příkazového řádku. Tento článek používá prostředí Bash . Můžete také použít prostředí PowerShell .

    Poznámka

    Některé příkazy vyžadují v prostředích Bash a PowerShell jinou syntaxi nebo formátování. Další informace najdete v tématu Tipy pro úspěšné používání Azure CLI.

    Snímek obrazovky s oknem azure Cloud Shell se zvýrazněným selektorem prostředí na panelu nástrojů

Příprava dvou relací rozhraní příkazového řádku

Dále musíte připravit dvě relace Azure CLI. Pokud používáte Cloud Shell, spouštíte tyto relace na samostatných Cloud Shell kartách. Pokud používáte místního klienta rozhraní příkazového řádku, spustíte samostatné instance rozhraní příkazového řádku. Samostatné relace rozhraní příkazového řádku použijte pro následující úlohy:

  • První relace simuluje zařízení IoT, které komunikuje s vaším centrem IoT.
  • Druhá relace vyvolá přímou metodu ze simulovaného zařízení pomocí služby IoT Hub.

Poznámka

Azure CLI vyžaduje, abyste se přihlásili ke svému účtu Azure. Pokud používáte Cloud Shell, budete automaticky přihlášeni ke svému účtu Azure. Pokud používáte místního klienta rozhraní příkazového řádku, musíte se přihlásit ke každé relaci rozhraní příkazového řádku. Veškerá komunikace mezi relací prostředí Azure CLI a centrem IoT se ověřuje a šifruje. V důsledku toho tento článek nepotřebuje další ověřování, které byste použili se skutečným zařízením, jako je například připojovací řetězec. Další informace o přihlašování pomocí Azure CLI najdete v tématu Přihlášení pomocí Azure CLI.

  1. V první relaci rozhraní příkazového řádku spusťte příkaz az extension add . Příkaz přidá rozšíření Microsoft Azure IoT pro Azure CLI do prostředí rozhraní příkazového řádku. Rozšíření přidává do Azure CLI příkazy specifické pro IoT Hub, IoT Edge a IoT Device Provisioning Service (DPS). Po instalaci rozšíření ho nemusíte instalovat znovu v žádné Cloud Shell relaci.

    az extension add --name azure-iot
    

    Poznámka

    Tento článek používá nejnovější verzi rozšíření Azure IoT s názvem azure-iot. Starší verze se nazývá azure-cli-iot-ext. Najednou byste měli mít nainstalovanou jenom jednu verzi. K ověření aktuálně nainstalovaných rozšíření můžete použít příkaz az extension list .

    Slouží az extension remove --name azure-cli-iot-ext k odebrání starší verze rozšíření.

    Použijte az extension add --name azure-iot k přidání nové verze rozšíření.

    Pokud chcete zjistit, jaká rozšíření máte nainstalovaná, použijte az extension list.

  2. Otevřete druhou relaci rozhraní příkazového řádku. Pokud používáte Cloud Shell v prohlížeči, vyberte ikonu Otevřít novou relaci na panelu nástrojů první relace rozhraní příkazového řádku. Pokud používáte rozhraní příkazového řádku místně, otevřete druhou instanci rozhraní příkazového řádku.

    Snímek obrazovky s oknem Azure Cloud Shell se zvýrazněnou ikonou Otevřít novou relaci na panelu nástrojů

Vytvoření a simulace zařízení

V této části vytvoříte identitu zařízení pro centrum IoT v první relaci rozhraní příkazového řádku a pak pomocí této identity zařízení simulujete zařízení. Simulované zařízení reaguje na přímé metody, které vyvoláte v druhé relaci rozhraní příkazového řádku.

Vytvoření a spuštění simulovaného zařízení:

  1. V první relaci rozhraní příkazového řádku spusťte příkaz az iot hub device-identity create a nahraďte následující zástupné symboly odpovídajícími hodnotami. Tento příkaz vytvoří identitu zařízení pro simulované zařízení.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. V první relaci rozhraní příkazového řádku spusťte příkaz az iot device simulate a nahraďte následující zástupné symboly odpovídajícími hodnotami. Tento příkaz simuluje zařízení pomocí identity zařízení, kterou jste vytvořili v předchozím kroku. Simulované zařízení je nakonfigurované tak, aby při vyvolání přímé metody vracelo stavový kód a datovou část.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Tip

    Příkaz az iot device simulate ve výchozím nastavení odesílá 100 zpráv typu zařízení-cloud s intervalem 3 sekund mezi zprávami. Simulace skončí po odeslání všech zpráv. Pokud chcete, aby simulace běžela déle, můžete pomocí parametru --msg-count zadat více zpráv nebo pomocí parametru --msg-interval určit delší interval mezi zprávami. Můžete také spustit příkaz znovu a restartovat simulované zařízení.

Vyvolání přímé metody

V této části použijete druhou relaci rozhraní příkazového řádku k vyvolání přímé metody na simulovaném zařízení spuštěném v první relaci rozhraní příkazového řádku.

  1. Ověřte, že je simulované zařízení v první relaci rozhraní příkazového řádku spuštěné. Pokud ne, restartujte ho opětovným spuštěním příkazu az iot device simulate z části Vytvořit a simulovat zařízení.

  2. Ve druhé relaci rozhraní příkazového řádku spusťte příkaz az iot hub invoke-device-method a nahraďte následující zástupné symboly odpovídajícími hodnotami. V tomto příkladu neexistuje žádná předchozí metoda pro zařízení. Příkaz zavolá název ukázkové metody na simulovaném zařízení. Metoda poskytuje stavový kód a datovou část v odpovědi.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    {MethodName}. Název přímé metody. Simulované zařízení nemá předem existující metodu, takže pro tento příkaz můžete zvolit libovolný název.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. V první relaci rozhraní příkazového řádku ověřte, že výstup zobrazuje vyvolání metody. Na následujícím snímku obrazovky jsme v az iot hub invoke-device-method příkazu rozhraní příkazového řádku použili SampleDevice pro {DeviceName} zástupné symboly a SampleMethod{MethodName} a .

    Snímek obrazovky simulovaného zařízení zobrazujícího výstup po vyvolání metody

  4. Ve druhé relaci rozhraní příkazového řádku ověřte, že výstup zobrazuje stavový kód a datovou část přijatou z vyvolané metody.

    Snímek obrazovky s oknem azure Cloud Shell zobrazující stavový kód a datovou část vyvoláné přímé metody

Vyvolání přímé metody s datovou částí

V této části použijete druhou relaci rozhraní příkazového řádku k vyvolání přímé metody a poskytnutí datové části simulovanému zařízení běžícímu v první relaci rozhraní příkazového řádku.

  1. Ověřte, že je simulované zařízení v první relaci rozhraní příkazového řádku spuštěné. Pokud ne, restartujte ho opětovným spuštěním příkazu az iot device simulate z části Vytvořit a simulovat zařízení.

  2. Ve druhé relaci rozhraní příkazového řádku spusťte příkaz az iot hub invoke-device-method a nahraďte následující zástupné symboly odpovídajícími hodnotami. V tomto příkladu neexistuje žádná předchozí metoda pro zařízení. Příkaz zavolá název ukázkové metody na simulovaném zařízení a poskytne datovou část pro danou metodu. Metoda poskytuje stavový kód a datovou část v odpovědi.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    {MethodName}. Název přímé metody. Simulované zařízení nemá předem existující metodu, takže pro tento příkaz můžete zvolit libovolný název.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. V první relaci rozhraní příkazového řádku ověřte, že výstup zobrazuje vyvolání metody. Na následujícím snímku obrazovky jsme v az iot hub invoke-device-method příkazu rozhraní příkazového řádku použili SampleDevice pro {DeviceName} zástupné symboly a SampleMethod{MethodName} a .

    Snímek obrazovky simulovaného zařízení zobrazujícího výstup po vyvolání metody s datovou částí

  4. Ve druhé relaci rozhraní příkazového řádku ověřte, že výstup zobrazuje stavový kód a datovou část přijatou z vyvolané metody.

    Snímek obrazovky s oknem azure Cloud Shell zobrazující stavový kód a datovou část vyvoláné přímé metody

Další kroky

Informace o tom, jak pomocí Azure CLI rozšířit řešení IoT a naplánovat volání metod na zařízeních, najdete v tématu Plánování a vysílání úloh.

Pokud chcete pokračovat v začátcích se vzory správy IoT Hub a zařízení, jako je například kompletní aktualizace image, přečtěte si článek Aktualizace zařízení pro Azure IoT Hub článek s využitím referenční image Raspberry Pi 3 B+.