Začínáme se správou zařízení (Azure CLI)
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 Azure CLI a zařízení spolupracovat a vyvolat přímou metodu pro 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 relace Azure CLI. 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í Azure CLI můžete spouštět dotazy dvojčete zařízení, abyste mohli hlásit průběh akcí správy zařízení. Další informace o použití přímých metod najdete v doprovodných materiálech ke komunikaci typu Cloud-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 při vyvolání jakékoli přímé metody vrátilo stavový kód a datovou část JSON.
Relace, která vyvolá přímou metodu na simulovaném zařízení vytvořeném v druhé relaci.
Požadavky
Rozhraní příkazového řádku Azure. Příkazy v tomto článku můžete spustit také pomocí azure Cloud Shellu, interaktivního prostředí cli, které běží v prohlížeči nebo v aplikaci, jako je Terminál Windows. Pokud používáte Cloud Shell, nemusíte nic instalovat. Pokud raději používáte rozhraní příkazového řádku místně, 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 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.
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).
Příprava Cloud Shellu
Pokud chcete použít Azure Cloud Shell, musíte ho nejprve spustit a nakonfigurovat. Pokud používáte rozhraní příkazového řádku místně, přejděte do části Příprava dvou relací rozhraní příkazového řádku.
V záhlaví stránky na webu Azure Portal vyberte ikonu Cloud Shellu.
Poznámka:
Pokud jste Cloud Shell použili poprvé, zobrazí se výzva k vytvoření úložiště, které je potřeba k použití Cloud Shellu. Vyberte předplatné, abyste vytvořili účet úložiště, a sdílenou složku služby Microsoft Azure Files.
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í PowerShellu .
Poznámka:
Některé příkazy vyžadují jinou syntaxi nebo formátování v prostředích Bash a PowerShellu . Další informace najdete v tématu Tipy pro úspěšné použití Azure CLI.
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, spustíte tyto relace na samostatných kartách Cloud Shellu. Pokud používáte místního klienta rozhraní příkazového řádku, spustíte samostatné instance rozhraní příkazového řádku. Pro následující úlohy použijte samostatné relace rozhraní příkazového řádku:
- První relace simuluje zařízení IoT, které komunikuje s centrem IoT.
- Druhá relace vyvolá přímou metodu ze simulovaného zařízení pomocí centra IoT.
Poznámka:
Azure CLI vyžaduje, abyste se přihlásili ke svému účtu Azure. Pokud používáte Cloud Shell, jste 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 připojovací řetězec. Další informace o přihlášení pomocí Azure CLI najdete v tématu Přihlášení pomocí Azure CLI.
V první relaci rozhraní příkazového řádku spusťte příkaz az extension add . Příkaz přidá do prostředí CLI rozšíření Microsoft Azure IoT pro Azure CLI. Rozšíření přidá příkazy specifické pro IoT Hub, IoT Edge a IoT Device Provisioning Service (DPS) do Azure CLI. Po instalaci rozšíření ho nemusíte znovu instalovat v žádné relaci Cloud Shellu.
az extension add --name azure-iot
Poznámka:
Tento článek používá nejnovější verzi rozšíření Azure IoT, která se nazývá
azure-iot
. Starší verze se nazýváazure-cli-iot-ext
. Najednou byste měli mít nainstalovanou jenom jednu verzi. Pomocí příkazuaz extension list
můžete ověřit aktuálně nainstalovaná rozšíření.Slouží
az extension remove --name azure-cli-iot-ext
k odebrání starší verze rozšíření.Slouží
az extension add --name azure-iot
k přidání nové verze rozšíření.Pokud chcete zjistit, jaká rozšíření jste nainstalovali, použijte
az extension list
.Otevřete druhou relaci rozhraní příkazového řádku. Pokud používáte Cloud Shell v prohlížeči, vyberte na panelu nástrojů první relace rozhraní příkazového řádku ikonu Otevřít novou relaci. Pokud používáte rozhraní příkazového řádku místně, otevřete druhou instanci rozhraní příkazového řádku.
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 simulujete zařízení pomocí této identity 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í:
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}
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 nakonfigurováno tak, aby při vyvolání přímé metody vrátilo 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
Ve výchozím nastavení odešle příkaz az iot device simulate 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í
--msg-count
parametru--msg-interval
zadat více zpráv nebo parametr 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.
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 příkazu Vytvořit a simulovat zařízení.
V 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ředem existující metoda pro zařízení. Příkaz volá na simulovaném zařízení název ukázkové metody. 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}
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 příkazu rozhraní příkazového
az iot hub invoke-device-method
řádku použiliSampleDevice
aSampleMethod
použili{DeviceName}
zástupné symboly a{MethodName}
zástupné symboly.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.
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.
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 příkazu Vytvořit a simulovat zařízení.
V 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ředem existující metoda pro zařízení. Příkaz volá ukázkový název metody na simulovaném zařízení a poskytuje datovou část pro tuto 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" }'
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 příkazu rozhraní příkazového
az iot hub invoke-device-method
řádku použiliSampleDevice
aSampleMethod
použili{DeviceName}
zástupné symboly a{MethodName}
zástupné symboly.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.
Další kroky
Informace o tom, jak pomocí Azure CLI rozšířit volání řešení IoT a naplánovat volání metod na zařízeních, najdete v tématu Úlohy plánování a vysílání.
Pokud chcete pokračovat v začátcích se vzory správy ioT Hubu a zařízení, jako je kompletní aktualizace založené na imagích, přečtěte si článek o službě Device Update pro Azure IoT Hub s využitím referenční image Raspberry Pi 3 B+.