Připojení zařízení prostřednictvím transparentní brány IoT Edge

Zařízení IoT Edge může fungovat jako brána, která poskytuje připojení mezi jinými zařízeními v místní síti a vaší aplikací IoT Central. Bránu použijete, když zařízení nemá přímý přístup k aplikaci IoT Central.

IoT Edge podporuje transparentní vzory brány a brány překladu. Tento článek shrnuje, jak implementovat transparentní vzor brány. V tomto vzoru brána předává zprávy z podřízeného zařízení do koncového bodu IoT Hubu ve vaší aplikaci IoT Central. Brána nezpůsobí manipulaci se zprávami při jejich průchodu. V IoT Central se každé podřízené zařízení zobrazuje jako podřízené zařízení brány:

Diagram that shows IoT Edge as a transparent gateway.

Pro zjednodušení tento článek používá virtuální počítače k hostování podřízených zařízení a zařízení brány. V reálném scénáři by podřízené zařízení a brána běžely na fyzických zařízeních v místní síti.

Tento článek ukazuje, jak implementovat scénář pomocí modulu runtime IoT Edge 1.4.

Požadavky

K dokončení kroků v tomto článku potřebujete:

Pokud chcete postupovat podle kroků v tomto článku, stáhněte si do počítače následující soubory:

Import manifestu nasazení

Každé zařízení IoT Edge potřebuje manifest nasazení ke konfiguraci modulu runtime IoT Edge. Import manifestu nasazení pro transparentní bránu IoT Edge:

  1. Přejděte do manifestů Edge.

  2. Vyberte + Nový, zadejte název manifestu nasazení, například transparentní bránu , a pak nahrajte soubor EdgeTransparentGatewayManifest.json , který jste stáhli dříve.

  3. Vyberte Vytvořit a uložte manifest nasazení do aplikace.

Přidání šablon zařízení

Podřízená zařízení i zařízení brány můžou používat šablony zařízení v IoT Central. IoT Central umožňuje modelovat vztah mezi podřízenými zařízeními a bránou, abyste je mohli zobrazit a spravovat po připojení. Šablona zařízení není nutná k připojení podřízeného zařízení k bráně.

Pokud chcete vytvořit šablonu zařízení pro podřízené zařízení, vytvořte standardní šablonu zařízení, která modeluje možnosti vašeho zařízení. Příklad uvedený v tomto článku používá model termostatu zařízení, který jste stáhli.

Vytvoření šablony zařízení pro podřízené zařízení:

  1. Vytvořte šablonu zařízení a jako typ šablony zvolte zařízení IoT.

  2. Na stránce Přizpůsobit průvodce zadejte název, například Termostat pro šablonu zařízení.

  3. Po vytvoření šablony zařízení vyberte Importovat model. Vyberte model, například soubor thermostat-1.json , který jste si stáhli dříve.

  4. Pokud chcete vygenerovat některá výchozí zobrazení pro termostat, vyberte zobrazení a pak zvolte Generovat výchozí zobrazení.

  5. Publikujte šablonu zařízení.

Vytvoření šablony zařízení pro zařízení transparentní brány IoT Edge:

  1. Vytvořte šablonu zařízení a jako typ šablony zvolte Azure IoT Edge .

  2. Na stránce Přizpůsobit průvodce zadejte název, například bránu Edge pro šablonu zařízení.

  3. Na stránce Přizpůsobit průvodce zaškrtněte políčko Toto je zařízení brány.

  4. Na stránce Revize vyberte Vytvořit.

  5. Na stránce Vytvořit model vyberte Vlastní model.

  6. Přidejte položku v relacích do šablony podřízeného zařízení.

Následující snímek obrazovky ukazuje stránku Relace pro zařízení brány IoT Edge s podřízenými zařízeními, která používají šablonu zařízení Termostat :

Screenshot showing IoT Edge gateway device template relationship with a thermostat downstream device template.

Předchozí snímek obrazovky ukazuje šablonu zařízení brány IoT Edge bez definovaných modulů. Transparentní brána nevyžaduje žádné moduly, protože modul runtime IoT Edge předává zprávy z podřízených zařízení přímo do IoT Central. Pokud samotná brána potřebuje odesílat telemetrii, synchronizovat vlastnosti nebo zpracovávat příkazy, můžete tyto funkce definovat v kořenové komponentě nebo v modulu.

Před publikováním šablon bran a podřízených zařízení přidejte všechny požadované vlastnosti a zobrazení cloudu.

Přidání zařízení

Když přidáte zařízení do aplikace IoT Central, můžete definovat vztah mezi podřízenými zařízeními a transparentní bránou.

Přidání zařízení:

  1. Přejděte na stránku zařízení v aplikaci IoT Central.

  2. Přidejte instanci zařízení IoT Edge transparentní brány. Když zařízení přidáte, ujistěte se, že jste vybrali manifest nasazení transparentní brány . V tomto článku je edgegatewayID zařízení brány .

  3. Přidejte jednu nebo více instancí podřízeného zařízení. V tomto článku jsou podřízená zařízení termostaty s ID thermostat1 a thermostat2.

  4. V seznamu zařízení vyberte každé podřízené zařízení a vyberte Připojit k bráně.

Následující snímek obrazovky ukazuje, že na stránce Podřízená zařízení můžete zobrazit seznam zařízení připojených k bráně:

Screenshot that shows the list of downstream devices connected to a transparent gateway.

V transparentní bráně se podřízená zařízení připojují k samotné bráně, ne k vlastnímu modulu hostovaným bránou.

Před nasazením zařízení potřebujete:

  • Rozsah ID vaší aplikace IoT Central
  • Hodnoty ID zařízení pro bránu a podřízená zařízení
  • Hodnoty primárního klíče pro brána a podřízená zařízení

Pokud chcete tyto hodnoty najít, přejděte na každé zařízení v seznamu zařízení a vyberte Připojení. Než budete pokračovat, poznamenejte si tyto hodnoty.

Tip

Zařízení můžete připojit a vytvořit relace bez nutnosti vytvářet šablony zařízení pro zařízení. Nepřiřazené podřízené zařízení můžete připojit k nepřiřazené zařízení brány.

Nasazení brány a zařízení

Pokud chcete tento scénář vyzkoušet, následující kroky ukazují, jak nasadit bránu a podřízená zařízení do virtuálních počítačů Azure.

Tip

Informace o nasazení modulu runtime IoT Edge do fyzického zařízení najdete v tématu Vytvoření zařízení IoT Edge v dokumentaci k IoT Edge.

Pokud chcete vyzkoušet scénář transparentní brány, vyberte následující tlačítko a nasaďte dva virtuální počítače s Linuxem. Jeden virtuální počítač má nainstalovaný modul runtime IoT Edge 1.4 a je transparentní brána IoT Edge. Druhý virtuální počítač je podřízené zařízení, ve kterém spouštíte kód pro odesílání simulovaných telemetrických dat termostatu:

Deploy to Azure Button

Po nasazení a spuštění dvou virtuálních počítačů ověřte, že na virtuálním edgegateway počítači běží zařízení brány IoT Edge:

  1. Přejděte na stránku Zařízení v aplikaci IoT Central. Pokud je zařízení brány IoT Edge připojené ke službě IoT Central, stav se zřídí.

  2. Otevřete zařízení brány IoT Edge a ověřte stav modulů na stránce Moduly . Pokud se modul runtime IoT Edge úspěšně spustil, stav modulů $edgeAgent a $edgeHub je spuštěný:

    Screenshot showing the $edgeAgent and $edgeHub version 1.4 modules running on the IoT Edge gateway.

    Tip

    Možná budete muset několik minut počkat, než se virtuální počítač spustí a zařízení se zřídí ve vaší aplikaci IoT Central.

Konfigurace brány

Aby vaše zařízení IoT Edge fungovalo jako transparentní brána, potřebuje některé certifikáty k prokázání své identity pro všechna podřízená zařízení. Tento článek používá ukázkové certifikáty. V produkčním prostředí použijte certifikáty z vaší certifikační autority.

Pokud chcete vygenerovat ukázkové certifikáty a nainstalovat je do zařízení brány:

  1. Pomocí SSH se připojte k virtuálnímu počítači zařízení brány a přihlaste se k němu.

  2. Spuštěním následujících příkazů naklonujte úložiště IoT Edge a vygenerujte ukázkové certifikáty:

    # Clone the repo
    cd ~
    git clone https://github.com/Azure/iotedge.git
    
    # Generate the demo certificates
    mkdir certs
    cd certs
    cp ~/iotedge/tools/CACertificates/*.cnf .
    cp ~/iotedge/tools/CACertificates/certGen.sh .
    ./certGen.sh create_root_and_intermediate
    ./certGen.sh create_edge_device_ca_certificate "mycacert"
    

    Po spuštění předchozích příkazů jsou následující soubory připravené k použití v dalších krocích:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem – kořenový certifikát certifikační autority použitý k vytvoření všech ostatních ukázkových certifikátů pro testování scénáře IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem – Certifikát certifikační autority zařízení, na který odkazuje konfigurační soubor IoT Edge. Ve scénáři brány tento certifikát certifikační autority označuje způsob, jakým zařízení IoT Edge ověřuje svou identitu na podřízená zařízení.
    • ~/certs/private/iot-edge-device-mycacert.key.pem – privátní klíč přidružený k certifikátu certifikační autority zařízení.

    Další informace o těchto ukázkových certifikátech najdete v tématu Vytvoření ukázkových certifikátů pro testování funkcí zařízení IoT Edge.

  3. Otevřete soubor config.toml v textovém editoru. Příklad:

    sudo nano /etc/aziot/config.toml
    
  4. V konfiguračním souboru vyhledejte následující nastavení. Přidejte nastavení certifikátu následujícím způsobem:

    trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem"
    
    [edge_ca]
    cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem"
    pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
    

    V předchozím příkladu se předpokládá, že jste přihlášení jako AzureUser a vytvořili jste certifikát certifikační autority zařízení s názvem mycacert.

  5. Uložte změny a restartujte modul runtime IoT Edge:

    sudo iotedge config apply
    

Pokud se modul runtime IoT Edge po provedení změn úspěšně spustí, změní se stav $edgeAgent a $edgeHub modulů na stránce Spuštěno na stránce Moduly pro vaše zařízení brány v IoT Central.

Pokud se modul runtime nespustí, zkontrolujte změny provedené v konfiguračním souboru IoT Edge a přečtěte si téma Řešení potíží se zařízením IoT Edge.

Vaše transparentní brána je teď nakonfigurovaná a připravená začít předávat telemetrii z podřízených zařízení.

Zřízení podřízeného zařízení

IoT Central využívá službu Device Provisioning Service (DPS) ke zřizování zařízení v IoT Central. IoT Edge v současné době nemůže pro vaši aplikaci IoT Central zřídit podřízené zařízení. Následující kroky ukazují, jak zařízení zřídit thermostat1 ručně. K provedení těchto kroků potřebujete prostředí s nainstalovaným Pythonem a připojením k internetu. Zkontrolujte aktuální požadavky na verzi Pythonu v sadě Azure IoT Python SDK. Azure Cloud Shell má předinstalovaný Python:

  1. Spuštěním následujícího příkazu nainstalujte azure.iot.device modul:

    pip install azure.iot.device
    
  2. Spuštěním následujícího příkazu stáhněte skript Pythonu, který provede zřizování zařízení:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. thermostat1 Pokud chcete zřídit podřízené zařízení v aplikaci IoT Central, spusťte následující příkazy a nahraďte {your application id scope}{your device primary key}ho . Tyto hodnoty jste si poznamenali při přidání zařízení do aplikace IoT Central:

    export IOTHUB_DEVICE_DPS_DEVICE_ID=thermostat1
    export IOTHUB_DEVICE_DPS_ID_SCOPE={your application id scope}
    export IOTHUB_DEVICE_DPS_DEVICE_KEY={your device primary key}
    python provision_device.py
    

V aplikaci IoT Central ověřte, že je stav zařízení pro thermostat1 zařízení nyní zřízený.

Konfigurace podřízeného zařízení

V předchozí části jste nakonfigurovali edgegateway virtuální počítač s ukázkovými certifikáty, aby se mohl spustit jako brána. Virtuální leafdevice počítač je připravený k instalaci simulátoru termostatu, který používá bránu pro připojení k IoT Central.

Virtuální leafdevice počítač potřebuje kopii kořenového certifikátu certifikační autority, který jste vytvořili na virtuálním edgegateway počítači. Zkopírujte soubor /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem z edgegateway virtuálního počítače do domovského adresáře na virtuálním leafdevice počítači. Pomocí příkazu scp můžete kopírovat soubory mezi virtuálními počítači s Linuxem. Například z leafdevice počítače:

scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem .

Informace o tom, jak zkontrolovat připojení z podřízeného zařízení k bráně, najdete v tématu Otestování připojení brány.

Spuštění simulátoru termostatu na virtuálním leafdevice počítači:

  1. Pomocí SSH se připojte k virtuálnímu počítači a přihlaste se k němu leafdevice .

  2. Stáhněte si ukázku Pythonu do domovského adresáře:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Nainstalujte modul Pythonu pro zařízení Azure IoT:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Nastavte proměnné prostředí pro konfiguraci ukázky. Nahraďte {your device shared key} primárním klíčem thermostat1 dříve provedené poznámky. Tyto proměnné předpokládají, že název virtuálního počítače brány je edgegateway a ID termostatu zařízení je thermostat1:

    export IOTHUB_DEVICE_SECURITY_TYPE=connectionString
    export IOTHUB_DEVICE_CONNECTION_STRING="HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}"
    export IOTEDGE_ROOT_CA_CERT_PATH=~/azure-iot-test-only.root.ca.cert.pem
    

    Všimněte si, jak připojovací řetězec používá název zařízení brány, a ne název centra IoT.

  5. Ke spuštění kódu použijte následující příkaz:

    python3 simple_thermostat.py
    

    Výstup z tohoto příkazu vypadá takto:

    Connecting using Connection String HostName=edgegateway;DeviceId=thermostat1;SharedAccessKey={your device shared key}
    Listening for command requests and property updates
    Press Q to quit
    Sending telemetry for temperature
    Sent message
    Sent message
    Sent message
    ...
    

    Tip

    Pokud se při pokusu o připojení podřízeného zařízení zobrazí chyba. Zkuste znovu spustit kroky zřizování zařízení.

  6. Pokud chcete zobrazit telemetrii v IoT Central, přejděte na stránku Přehled zařízení s termostatem1:

    Screenshot showing telemetry from the downstream device.

    Na stránce Informace můžete zobrazit hodnoty vlastností odeslané z podřízeného zařízení a na stránce Příkaz můžete volat příkazy na podřízené zařízení.