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:
Použijte prostředí Bash v Azure Cloud Shellu. Další informace najdete v rychlém startu pro Azure Cloud Shell – Bash.
Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru.
- Přihlaste se k Azure CLI pomocí příkazu az login .
- Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.
- Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.
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
.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ů:
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.
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
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-locations
pří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
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í:
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}
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>
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.
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.
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:
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í.
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}
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í:
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í.
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}
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
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.
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:
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:
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
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}
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.
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:
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.
Na webu Azure Portal vyberte v rozevíracím seznamu Prostředek centrum IoT.
V navigační nabídce vyberte Metriky v části Monitorování .
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:
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.
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}"
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:
Když simulované zařízení úspěšně přijme volání přímé metody, odešle potvrzení zpět do centra:
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.
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}"
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í.
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:
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.