Kurz: Použití simulovaného zařízení k otestování připojení k IoT Hubu

V tomto kurzu použijete nástroje portálu Azure IoT Hub a rozhraní příkazového řádku Azure k otestování připojení zařízení. Tento kurz také využívá jednoduchý simulátor zařízení, který spustíte na svém stolním počítači.

Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.

V tomto kurzu se naučíte:

  • Zkontrolovat ověřování zařízení
  • Kontrola připojení zařízení ke cloudu
  • Kontrola připojení cloudu k zařízení
  • Zkontrolovat synchronizaci dvojčat zařízení

Požadavky

  • V tomto kurzu se k vytváření cloudových prostředků používá Azure CLI. Příkazy rozhraní příkazového řádku můžete spustit dvěma způsoby:

    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říkazu az 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.

  • Ukázková aplikace, kterou spustíte v tomto kurzu, používá Node.js. Na vývojovém počítači potřebujete Node.js v10.x.x nebo novější.

    • Node.js pro různé platformy si můžete stáhnout z webu nodejs.org.

    • Aktuální verzi Node.js na počítači používaném pro vývoj můžete ověřit pomocí následujícího příkazu:

      node --version
      
  • Naklonujte nebo stáhněte ukázkový projekt Node.js z ukázek Azure IoT pro Node.js.

  • Ujistěte se, že je v bráně firewall otevřený port 8883. Ukázka zařízení v tomto kurzu 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, jak tento problém obejít, najdete v tématu Připojení pro IoT Hub (MQTT).

Vytvoření centra IoT

V této části použijete Azure CLI k vytvoření centra IoT a skupiny prostředků. Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure. Centrum IoT funguje jako centrální centrum zpráv pro obousměrnou komunikaci mezi vaší aplikací IoT a zařízeními.

Pokud už ve svém předplatném Azure máte centrum IoT, můžete tuto část přeskočit.

Vytvoření centra IoT a skupiny prostředků:

  1. Spusťte aplikaci CLI. Pokud chcete spustit příkazy rozhraní příkazového řádku ve zbývající části tohoto článku, zkopírujte syntaxi příkazu, vložte ho do aplikace CLI, upravte hodnoty proměnných a stiskněte Enter.

    • Pokud používáte Cloud Shell, vyberte v příkazech rozhraní příkazového řádku tlačítko Vyzkoušet a spusťte Cloud Shell v rozděleném okně prohlížeče. Nebo můžete Cloud Shell otevřít na samostatné kartě prohlížeče.
    • Pokud používáte Azure CLI místně, spusťte konzolovou aplikaci CLI a přihlaste se k Azure CLI.
  2. Spuštěním příkazu az extension add nainstalujte nebo upgradujte rozšíření azure-iot na aktuální verzi.

    az extension add --upgrade --name azure-iot
    
  3. V aplikaci CLI spusťte příkaz az group create a vytvořte skupinu prostředků. Následující příkaz vytvoří skupinu prostředků MyResourceGroup v umístění eastus.

    Poznámka:

    Volitelně můžete nastavit jiné umístění. Pokud chcete zobrazit dostupná umístění, spusťte az account list-locationspříkaz . V tomto rychlém startu se používá eastus , jak je znázorněno v ukázkovém příkazu.

    az group create --name MyResourceGroup --location eastus
    
  4. Spuštěním příkazu az iot hub create vytvořte IoT Hub. Vytvoření centra IoT může trvat několik minut.

    YourIotHubName. Nahraďte tento zástupný symbol a okolní složené závorky v následujícím příkazu pomocí názvu, který jste zvolili pro centrum IoT. Název centra IoT musí být v Azure globálně jedinečný. Ve zbývající části tohoto rychlého startu použijte název centra IoT, ať se zobrazí zástupný symbol.

    az iot hub create --resource-group MyResourceGroup --name {your_iot_hub_name}
    

Kontrola ověření zařízení

Před jakoukoli výměnou dat je třeba zařízení u centra ověřit. Ke správě zařízení a kontrole ověřovacích klíčů, které používají, můžete na portálu využít nástroj Zařízení IoT v části Správa zařízení. V této části kurzu přidáte nové testovací zařízení, načtete jeho klíč a zkontrolujete, jestli se testovací zařízení připojí k centru. Později resetujete ověřovací klíč a budete zkoumat, co se stane, když se zařízení pokusí použít zastaralý klíč.

Registrace zařízení

Zařízení musí být zaregistrované ve vašem centru IoT Hub, aby se mohlo připojit. V této části použijete Azure CLI k vytvoření identity zařízení.

Pokud už máte zařízení zaregistrované ve službě IoT Hub, můžete tuto část přeskočit.

Vytvoření identity zařízení:

  1. V prostředí rozhraní příkazového řádku spusťte příkaz az iot hub device-identity create . Tento příkaz vytvoří identitu zařízení.

    your_iot_hub_name. Nahraďte tento zástupný symbol názvem, který jste zvolili pro centrum IoT.

    myDevice. Tento název můžete použít pro ID zařízení v tomto článku nebo zadat jiný název zařízení.

    az iot hub device-identity create --device-id myDevice --hub-name {your_iot_hub_name}
    
  2. Spusťte příkaz az iot hub device-identity connection-string show.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {your_iot_hub_name}
    

    Výstup připojovací řetězec je v následujícím formátu:

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. Uložte připojovací řetězec do zabezpečeného umístění.

Poznámka:

Nechte aplikaci rozhraní příkazového řádku otevřenou. Použijete ho v pozdějších krocích.

Simulace testovacího zařízení

Pokud chcete simulovat zařízení odesílající telemetrii do centra IoT, spusťte Node.js aplikaci simulovaného zařízení, kterou jste si stáhli dříve.

  1. V okně terminálu na vývojovém počítači přejděte do kořenové složky ukázkového Node.js projektu, který jste stáhli. Pak přejděte do složky iot-hub\Tutorials\Připojení ivityTests.

  2. V okně terminálu pomocí následujících příkazů nainstalujte požadované knihovny a spusťte aplikaci simulovaného zařízení. Použijte zařízení, připojovací řetězec jste si poznamenali při registraci zařízení.

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Po připojení k centru se v okně terminálu zobrazí zpráva o úspěchu:

    Screenshot that shows the simulated device connecting.

Teď jste se ze zařízení úspěšně ověřili pomocí klíče zařízení vygenerovaného centrem IoT.

Resetování klíčů

V této části resetujete klíč zařízení a uvidíte chybu, ke které dojde, pokud se simulované zařízení pokusí o připojení.

  1. Pokud chcete resetovat primární klíč zařízení pro vaše zařízení, spusťte příkaz az iot hub device-identity update :

    # Generate a new Base64 encoded key using the current date
    read key < <(date +%s | sha256sum | base64 | head -c 32)
    
    # Reset the primary device key for test device
    az iot hub device-identity update --device-id {your_device_id} --set authentication.symmetricKey.primaryKey=$key --hub-name {your_iot_hub_name}
    
  2. V okně terminálu na počítači pro vývoj znovu spusťte aplikaci simulovaného zařízení:

    npm install
    node SimulatedDevice-1.js "{your_device_connection_string}"
    

    Tentokrát se poté, co se aplikace pokusí o připojení, zobrazí chyba ověřování:

    Screenshot that shows the connection failing after the key reset.

Vygenerování tokenu sdíleného přístupového podpisu (SAS)

Pokud zařízení používá některou ze sad SDK pro zařízení centra IoT Hub, vygeneruje kód knihovny SDK token SAS potřebný k ověření u centra. Token SAS se generuje z názvu centra, názvu zařízení a klíče zařízení.

V některých scénářích, například v cloudové bráně protokolu nebo v rámci schématu vlastního ověřování, může být nutné, abyste token SAS vygenerovali sami. Při řešení potíží s kódem generování SAS je užitečné vygenerovat známý token SAS, který se použije během testování.

Poznámka:

Ukázka SimulatedDevice-2.js zahrnuje příklady generování tokenu SAS se sadou SDK i bez ní.

  1. Spuštěním příkazu az iot hub genereate-sas-token vygenerujte známý token SAS pomocí rozhraní příkazového řádku:

    az iot hub generate-sas-token --device-id {your_device_id} --hub-name {your_iot_hub_name}
    
  2. Zkopírujte celý text vygenerovaného tokenu SAS. Token SAS vypadá jako v následujícím příkladu: SharedAccessSignature sr=tutorials-iot-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111

  3. V okně terminálu na počítači pro vývoj přejděte do kořenové složky ukázkového projektu Node.js, který máte stažený. Pak přejděte do složky iot-hub\Tutorials\Připojení ivityTests.

  4. V okně terminálu spusťte následující příkazy pro instalaci požadovaných knihoven a spuštění aplikace simulovaného zařízení:

    npm install
    node SimulatedDevice-2.js "{Your SAS token}"
    

    Okno terminálu zobrazí zprávu o úspěšném připojení k centru pomocí tokenu SAS:

    Screenshot that shows a successful connection using a SAS token.

Teď jste se ze zařízení úspěšně ověřili pomocí tokenu SAS vygenerovaného příkazem z příkazového řádku. Soubor SimulatedDevice-2.js obsahuje ukázkový kód pro postup, jak vygenerovat token SAS v kódu.

Protokoly

Zařízení může k připojení do centra IoT použít kterýkoli z následujících protokolů:

Protokol Odchozí port
MQTT 8883
MQTT přes WebSockets 443
AMQP 5671
AMQP přes WebSockets 443
HTTPS 443

Pokud odchozí port blokuje brána firewall, zařízení se nemůže připojit:

Screenshot that shows a connection error when the outbound port is blocked.

Kontrola připojení zařízení ke cloudu

Jakmile se zařízení připojí, může začít odesílat telemetrii do centra IoT. V této části se dozvíte, jak můžete ověřit, že telemetrie odesílaná ze zařízení dojde do centra.

Odesílání zpráv ze zařízení do cloudu

  1. Vzhledem k tomu, že resetujeme připojovací řetězec pro vaše zařízení v předchozí části, použijte příkaz az iot hub device-identity connection-string show k načtení aktualizovaného připojovací řetězec:

    az iot hub device-identity connection-string show --device-id {your_device_id} --output table --hub-name {your_iot_hub_name}
    
  2. Pokud chcete spustit simulované zařízení, které odesílá zprávy, přejděte do složky iot-hub\Tutorials\Připojení ivityTests ve staženém kódu.

  3. V okně terminálu spusťte následující příkazy pro instalaci požadovaných knihoven a spuštění aplikace simulovaného zařízení:

    npm install
    node SimulatedDevice-3.js "{your_device_connection_string}"
    

    V okně terminálu se během odesílání telemetrie do centra IoT budou zobrazovat informace:

    Screenshot that shows the simulated device sending messages.

Sledování příchozích zpráv

Pomocí metrik na portálu můžete ověřit, že se zprávy telemetrie dostanou do centra IoT.

  1. Na webu Azure Portal vyberte v rozevíracím seznamu Prostředek centrum IoT.

  2. V navigační nabídce vyberte Metriky v části Monitorování .

  3. Vyberte telemetrické zprávy odeslané jako metriku a nastavte časový rozsah na minulou hodinu. Graf zobrazuje agregovaný počet zpráv odeslaných simulovaným zařízením:

    Screenshot showing left pane metrics.

Po spuštění simulovaného zařízení několik minut trvá, než jsou metriky k dispozici.

Kontrola připojení cloudu k zařízení

V této části se vysvětluje, jak provést testovací volání zařízení přímou metodou a zkontrolovat tak jeho připojení ke cloudu. Simulované zařízení spustíte na svém počítači pro vývoj a budete naslouchat voláním přímou metodou z centra.

  1. V okně terminálu následujícím příkazem spusťte aplikaci simulovaného zařízení:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. V samostatném okně pomocí příkazu az iot hub invoke-device-method volejte přímou metodu na zařízení:

    az iot hub invoke-device-method --device-id {your_device_id} --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name {your_iot_hub_name}
    

    Jakmile simulované zařízení přijme volání přímou metodou, vytiskne zprávu na konzole:

    Screenshot that shows the device confirming that the direct method was received.

    Když simulované zařízení úspěšně přijme volání přímé metody, odešle potvrzení zpět do centra:

    Screenshot showing that the device returns a direct method acknowledgment.

Kontrola synchronizace dvojčat zařízení

Dvojčata zařízením slouží k synchronizaci stavu mezi zařízením a centrem. V této části se naučíte pomocí rozhraní příkazového řádku odeslat do zařízení požadované vlastnosti a přečíst ohlášené vlastnosti odeslané zařízením.

Simulované zařízení, s kterým v této části pracujete, odesílá ohlášené vlastnosti do centra při každém svém spuštění a při přijetí požadovaných vlastností je vždy vytiskne na konzolu.

  1. V okně terminálu následujícím příkazem spusťte aplikaci simulovaného zařízení:

    node SimulatedDevice-3.js "{your_device_connection_string}"
    
  2. V samostatném okně spusťte příkaz az iot hub device-twin show a ověřte, že centrum přijalo ohlášené vlastnosti ze zařízení:

    az iot hub device-twin show --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    Ve výstupu z příkazu vidíte v části s ohlášenými vlastnostmi položku devicelaststarted. Tato vlastnost obsahuje datum a čas posledního spuštění simulovaného zařízení.

    Screenshot showing the reported properties of a device.

  3. Pokud chcete ověřit, že centrum může do zařízení odesílat požadované hodnoty vlastností, použijte příkaz az iot hub device-twin update :

    az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id {your_device_id} --hub-name {your_iot_hub_name}
    

    Simulované zařízení při přijetí aktualizace požadovaných vlastností z centra vytiskne zprávu:

    Screenshot that shows the device confirming that the desired properties update was received.

Vedle průběžného přijímání změn v požadovaných vlastnostech je simulované zařízení také automaticky zkontroluje při svém spuštění.

Vyčištění prostředků

Pokud už centrum IoT nepotřebujete, odstraňte ho společně se skupinou prostředků na portálu. Uděláte to tak, že vyberete skupinu prostředků, která obsahuje centrum IoT, a vyberete Odstranit.

Další kroky

V tomto kurzu jste se dozvěděli, jak zkontrolovat klíče zařízení, připojení zařízení ke cloudu a cloudu k zařízení a synchronizaci dvojčat zařízení. Další informace o tom, jak sledovat centrum IoT, najdete v článku s postupy monitorování služby IoT Hub.