Jak połączyć urządzenia za pośrednictwem przezroczystej bramy usługi IoT Edge

Urządzenie usługi IoT Edge może działać jako brama, która zapewnia połączenie między innymi urządzeniami w sieci lokalnej i aplikacji usługi IoT Central. Brama jest używana, gdy urządzenie nie może uzyskać bezpośredniego dostępu do aplikacji usługi IoT Central.

Usługa IoT Edge obsługuje wzorce bram przezroczystych i translacji. W tym artykule podsumowano sposób implementowania wzorca przezroczystej bramy. W tym wzorcu brama przekazuje komunikaty z urządzenia podrzędnego do punktu końcowego usługi IoT Hub w aplikacji usługi IoT Central. Brama nie manipuluje komunikatami podczas ich przekazywania. W usłudze IoT Central każde urządzenie podrzędne jest wyświetlane jako podrzędne dla urządzenia bramy:

Diagram that shows IoT Edge as a transparent gateway.

Dla uproszczenia w tym artykule maszyny wirtualne są używane do hostowania urządzeń podrzędnych i bram. W rzeczywistym scenariuszu urządzenie podrzędne i brama będą działać na urządzeniach fizycznych w sieci lokalnej.

W tym artykule pokazano, jak zaimplementować scenariusz przy użyciu środowiska uruchomieniowego usługi IoT Edge 1.4.

Wymagania wstępne

Aby wykonać kroki opisane w tym artykule, potrzebne są następujące elementy:

Aby wykonać kroki opisane w tym artykule, pobierz następujące pliki na komputer:

Importowanie manifestu wdrożenia

Każde urządzenie usługi IoT Edge wymaga manifestu wdrożenia w celu skonfigurowania środowiska uruchomieniowego usługi IoT Edge. Aby zaimportować manifest wdrożenia dla przezroczystej bramy usługi IoT Edge:

  1. Przejdź do manifestów usługi Edge.

  2. Wybierz pozycję + Nowy, wprowadź nazwę manifestu wdrożenia, na przykład Przezroczysta brama , a następnie przekaż pobrany wcześniej plik EdgeTransparentGatewayManifest.json .

  3. Wybierz pozycję Utwórz , aby zapisać manifest wdrożenia w aplikacji.

Dodawanie szablonów urządzeń

Zarówno urządzenia podrzędne, jak i urządzenie bramy mogą używać szablonów urządzeń w usłudze IoT Central. Usługa IoT Central umożliwia modelowanie relacji między urządzeniami podrzędnymi i bramą, dzięki czemu można wyświetlać je i zarządzać nimi po nawiązaniu połączenia. Szablon urządzenia nie jest wymagany do dołączenia urządzenia podrzędnego do bramy.

Aby utworzyć szablon urządzenia dla urządzenia podrzędnego, utwórz standardowy szablon urządzenia, który modeluje możliwości urządzenia. W przykładzie przedstawionym w tym artykule użyto pobranego modelu urządzenia termostatu.

Aby utworzyć szablon urządzenia dla urządzenia podrzędnego:

  1. Utwórz szablon urządzenia i wybierz urządzenie IoT jako typ szablonu.

  2. Na stronie Dostosowywanie kreatora wprowadź nazwę, taką jak Termostat dla szablonu urządzenia.

  3. Po utworzeniu szablonu urządzenia wybierz pozycję Importuj model. Wybierz model, taki jak pobrany wcześniej plik thermostat-1.json .

  4. Aby wygenerować widoki domyślne dla termostatu, wybierz widoki, a następnie wybierz pozycję Generuj widoki domyślne.

  5. Publikowanie szablonu urządzenia.

Aby utworzyć szablon urządzenia dla urządzenia przezroczystej bramy usługi IoT Edge:

  1. Utwórz szablon urządzenia i wybierz usługę Azure IoT Edge jako typ szablonu.

  2. Na stronie Dostosowywanie kreatora wprowadź nazwę, taką jak brama usługi Edge dla szablonu urządzenia.

  3. Na stronie Dostosowywanie kreatora sprawdź, czy jest to urządzenie bramy.

  4. Na stronie Przegląd wybierz pozycję Utwórz.

  5. Na stronie Tworzenie modelu wybierz pozycję Model niestandardowy.

  6. Dodaj wpis w obszarze Relacje do szablonu urządzenia podrzędnego.

Poniższy zrzut ekranu przedstawia stronę Relacje dla urządzenia bramy usługi IoT Edge z urządzeniami podrzędnymi używającymi szablonu urządzenia Termostat :

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

Poprzedni zrzut ekranu przedstawia szablon urządzenia bramy usługi IoT Edge bez zdefiniowanych modułów. Przezroczysta brama nie wymaga żadnych modułów, ponieważ środowisko uruchomieniowe usługi IoT Edge przekazuje komunikaty z urządzeń podrzędnych bezpośrednio do usługi IoT Central. Jeśli brama musi wysyłać dane telemetryczne, synchronizować właściwości lub obsługiwać polecenia, możesz zdefiniować te możliwości w składniku głównym lub w module.

Przed opublikowaniem bramy i szablonów urządzeń podrzędnych dodaj wszystkie wymagane właściwości i widoki w chmurze.

Dodawanie urządzeń

Po dodaniu urządzeń do aplikacji usługi IoT Central można zdefiniować relację między urządzeniami podrzędnymi a przezroczystą bramą.

Aby dodać urządzenia:

  1. Przejdź do strony urządzenia w aplikacji usługi IoT Central.

  2. Dodaj wystąpienie urządzenia usługi IoT Edge przezroczystej bramy. Po dodaniu urządzenia upewnij się, że wybrano manifest wdrożenia przezroczystej bramy . W tym artykule identyfikator urządzenia bramy to edgegateway.

  3. Dodaj co najmniej jedno wystąpienie urządzenia podrzędnego. W tym artykule urządzenia podrzędne to termostaty z identyfikatorami thermostat1 i thermostat2.

  4. Na liście urządzeń wybierz każde urządzenie podrzędne i wybierz pozycję Dołącz do bramy.

Poniższy zrzut ekranu przedstawia listę urządzeń dołączonych do bramy na stronie Urządzenia podrzędne:

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

W przezroczystej bramie urządzenia podrzędne łączą się z samą bramą, a nie z niestandardowym modułem hostowanym przez bramę.

Przed wdrożeniem urządzeń potrzebne są następujące elementy:

  • Zakres identyfikatora aplikacji usługi IoT Central.
  • Wartości identyfikatora urządzenia dla bramy i urządzeń podrzędnych.
  • Wartości klucza podstawowego dla bramy i urządzeń podrzędnych.

Aby znaleźć te wartości, przejdź do każdego urządzenia na liście urządzeń i wybierz pozycję Połączenie. Przed kontynuowaniem zanotuj te wartości.

Napiwek

Możesz połączyć urządzenia i ustanowić relacje bez uprzedniego tworzenia szablonów urządzeń dla urządzeń. Nieprzypisane urządzenie podrzędne można dołączyć do nieprzypisanego urządzenia bramy.

Wdrażanie bramy i urządzeń

Aby wypróbować ten scenariusz, poniższe kroki pokazują, jak wdrożyć bramę i urządzenia podrzędne na maszynach wirtualnych platformy Azure.

Napiwek

Aby dowiedzieć się, jak wdrożyć środowisko uruchomieniowe usługi IoT Edge na urządzeniu fizycznym, zobacz Tworzenie urządzenia usługi IoT Edge w dokumentacji usługi IoT Edge.

Aby wypróbować scenariusz przezroczystej bramy, wybierz następujący przycisk, aby wdrożyć dwie maszyny wirtualne z systemem Linux. Jedna maszyna wirtualna ma zainstalowane środowisko uruchomieniowe usługi IoT Edge 1.4 i jest przezroczystą bramą usługi IoT Edge. Druga maszyna wirtualna to urządzenie podrzędne, na którym uruchamiasz kod do wysyłania symulowanych telemetrii termostatu:

Deploy to Azure Button

Po wdrożeniu i uruchomieniu dwóch maszyn wirtualnych sprawdź, czy urządzenie bramy usługi IoT Edge jest uruchomione na maszynie edgegateway wirtualnej:

  1. Przejdź do strony Urządzenia w aplikacji usługi IoT Central. Jeśli urządzenie bramy usługi IoT Edge jest połączone z usługą IoT Central, jego stan to Aprowizuj.

  2. Otwórz urządzenie bramy usługi IoT Edge i sprawdź stan modułów na stronie Moduły . Jeśli środowisko uruchomieniowe usługi IoT Edge zostało uruchomione pomyślnie, stan modułów $edgeAgent i $edgeHub to Uruchomione:

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

    Napiwek

    Może być konieczne odczekanie kilku minut podczas uruchamiania maszyny wirtualnej i aprowizowania urządzenia w aplikacji usługi IoT Central.

Konfigurowanie bramy

Aby urządzenie usługi IoT Edge działało jako przezroczysta brama, potrzebuje niektórych certyfikatów, aby udowodnić swoją tożsamość wszystkim urządzeniom podrzędnym. W tym artykule używane są certyfikaty demonstracyjne. W środowisku produkcyjnym użyj certyfikatów z urzędu certyfikacji.

Aby wygenerować certyfikaty demonstracyjne i zainstalować je na urządzeniu bramy:

  1. Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie wirtualnej urządzenia bramy.

  2. Uruchom następujące polecenia, aby sklonować repozytorium usługi IoT Edge i wygenerować certyfikaty demonstracyjne:

    # 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 uruchomieniu poprzednich poleceń następujące pliki są gotowe do użycia w następnych krokach:

    • ~/certs/certs/azure-iot-test-only.root.ca.cert.pem — certyfikat głównego urzędu certyfikacji używany do tworzenia wszystkich innych certyfikatów demonstracyjnych na potrzeby testowania scenariusza usługi IoT Edge.
    • ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem — certyfikat urzędu certyfikacji urządzenia, do których odwołuje się plik konfiguracji usługi IoT Edge. W scenariuszu bramy ten certyfikat urzędu certyfikacji jest sposobem, w jaki urządzenie usługi IoT Edge weryfikuje swoją tożsamość na urządzeniach podrzędnych.
    • ~/certs/private/iot-edge-device-mycacert.key.pem — klucz prywatny skojarzony z certyfikatem urzędu certyfikacji urządzenia.

    Aby dowiedzieć się więcej na temat tych certyfikatów demonstracyjnych, zobacz Tworzenie certyfikatów demonstracyjnych w celu przetestowania funkcji urządzeń usługi IoT Edge.

  3. Otwórz plik config.toml w edytorze tekstów. Na przykład:

    sudo nano /etc/aziot/config.toml
    
  4. Znajdź następujące ustawienia w pliku konfiguracji. Dodaj ustawienia certyfikatu w następujący sposób:

    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"
    

    W poprzednim przykładzie założono, że logujesz się jako użytkownik AzureUser i utworzono certyfikat urzędu certyfikacji urządzenia o nazwie "mycacert".

  5. Zapisz zmiany i uruchom ponownie środowisko uruchomieniowe usługi IoT Edge:

    sudo iotedge config apply
    

Jeśli środowisko uruchomieniowe usługi IoT Edge zostanie pomyślnie uruchomione po wprowadzeniu zmian, stan modułów $edgeAgent i $edgeHub zmieni się na Uruchomiono na stronie Moduły urządzenia bramy w usłudze IoT Central.

Jeśli środowisko uruchomieniowe nie zostanie uruchomione, sprawdź zmiany wprowadzone w pliku konfiguracji usługi IoT Edge i zobacz Rozwiązywanie problemów z urządzeniem usługi IoT Edge.

Brama przezroczysta jest teraz skonfigurowana i gotowa do rozpoczęcia przekazywania danych telemetrycznych z urządzeń podrzędnych.

Aprowizuj urządzenie podrzędne

Usługa IoT Central korzysta z usługi Device Provisioning Service (DPS) do aprowizowania urządzeń w usłudze IoT Central. Obecnie usługa IoT Edge nie może użyć usługi DPS aprowizacji urządzenia podrzędnego do aplikacji usługi IoT Central. W poniższych krokach pokazano, jak ręcznie aprowizować thermostat1 urządzenie. Aby wykonać te kroki, potrzebujesz środowiska z zainstalowanym językiem Python i łącznością z Internetem. Zapoznaj się z zestawem SDK języka Python usługi Azure IoT, aby zapoznać się z bieżącymi wymaganiami dotyczącymi wersji języka Python. Usługa Azure Cloud Shell ma wstępnie zainstalowany język Python:

  1. Uruchom następujące polecenie, aby zainstalować azure.iot.device moduł:

    pip install azure.iot.device
    
  2. Uruchom następujące polecenie, aby pobrać skrypt języka Python, który wykonuje aprowizację urządzenia:

    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/provision_device.py
    
  3. Aby aprowizować thermostat1 urządzenie podrzędne w aplikacji usługi IoT Central, uruchom następujące polecenia, zastępując {your application id scope} i {your device primary key}. Podczas dodawania urządzeń do aplikacji usługi IoT Central zanotujesz te wartości:

    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
    

W aplikacji usługi IoT Central sprawdź, czy stanthermostat1 urządzenia jest teraz aprowizowany.

Konfigurowanie urządzenia podrzędnego

W poprzedniej sekcji skonfigurowano maszynę edgegateway wirtualną z certyfikatami demonstracyjnymi, aby umożliwić jej uruchamianie jako brama. Maszyna wirtualna leafdevice jest gotowa do zainstalowania symulatora termostatu, który używa bramy do nawiązywania połączenia z usługą IoT Central.

Maszyna wirtualna leafdevice wymaga kopii certyfikatu głównego urzędu certyfikacji utworzonego na maszynie edgegateway wirtualnej. Skopiuj plik /home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem z edgegateway maszyny wirtualnej do katalogu macierzystego na maszynie leafdevice wirtualnej. Za pomocą polecenia scp można kopiować pliki między maszynami wirtualnymi z systemem Linux. Na przykład z maszyny leafdevice :

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

Aby dowiedzieć się, jak sprawdzić połączenie z urządzenia podrzędnego do bramy, zobacz Testowanie połączenia bramy.

Aby uruchomić symulator termostatu na maszynie leafdevice wirtualnej:

  1. Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie leafdevice wirtualnej.

  2. Pobierz przykładowy język Python do katalogu macierzystego:

    cd ~
    wget https://raw.githubusercontent.com/Azure-Samples/iot-central-docs-samples/main/transparent-gateway-1-4/simple_thermostat.py
    
  3. Zainstaluj moduł Python urządzenia Azure IoT:

    sudo apt update
    sudo apt install python3-pip
    pip3 install azure.iot.device
    
  4. Ustaw zmienne środowiskowe, aby skonfigurować przykład. Zastąp {your device shared key} ciąg kluczem thermostat1 podstawowym zanotuj wcześniej. Te zmienne zakładają, że nazwa maszyny wirtualnej bramy to edgegateway , a identyfikator urządzenia termostatu to 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
    

    Zwróć uwagę, że parametry połączenia używa nazwy urządzenia bramy, a nie nazwy centrum IoT.

  5. Aby uruchomić kod, użyj następującego polecenia:

    python3 simple_thermostat.py
    

    Dane wyjściowe tego polecenia wyglądają następująco:

    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
    ...
    

    Napiwek

    Jeśli wystąpi błąd, gdy urządzenie podrzędne spróbuje nawiązać połączenie. Spróbuj ponownie uruchomić kroki aprowizacji urządzenia.

  6. Aby wyświetlić dane telemetryczne w usłudze IoT Central, przejdź do strony Przegląd urządzenia termostat1 :

    Screenshot showing telemetry from the downstream device.

    Na stronie Informacje można wyświetlić wartości właściwości wysyłane z urządzenia podrzędnego, a na stronie Polecenie można wywołać polecenia na urządzeniu podrzędnym.