Udostępnij za pośrednictwem


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

Urządzenie IoT Edge może działać jako brama, która zapewnia połączenie między innymi urządzeniami w sieci lokalnej a twoją aplikacją 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 działania bram przezroczystych i translacyjnych. W tym artykule podsumowano sposób implementowania wzorca przezroczystej bramy. W tym wzorcu bramka przekazuje komunikaty z urządzenia podrzędnego do punktu końcowego IoT Hub w aplikacji IoT Central. Brama nie manipuluje komunikatami podczas ich przekazywania. W usłudze IoT Central każde urządzenie podrzędne pojawia się jako dziecko urządzenia bramowego.

Diagram przedstawiający usługę IoT Edge jako przezroczystą bramę.

Ważne

Ten artykuł zawiera kroki łączenia urządzenia przy użyciu sygnatury dostępu współdzielonego, nazywanej również uwierzytelnianiem klucza symetrycznego. Ta metoda uwierzytelniania jest wygodna do testowania i oceny, ale uwierzytelnianie urządzenia przy użyciu certyfikatów X.509 jest bardziej bezpieczne. Aby dowiedzieć się więcej, zobacz Security best practices for IoT solutions Connection security (Najlepsze rozwiązania w zakresie zabezpieczeń rozwiązań > IoT Connection Security).

Dla ułatwienia w tym artykule do hostowania urządzeń odbiorczych i bram używane są maszyny wirtualne. 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 Dostosuj 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 brzegowa, dla szablonu urządzenia.

  3. Na stronie Personalizuj kreatora sprawdź, czy To jest urządzenie bramy.

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

  5. Na stronie Tworzenie modelu wybierz pozycję Niestandardowy model.

  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 :

Zrzut ekranu przedstawiający związek szablonu urządzenia bramowego IoT Edge z szablonem urządzenia podrzędnego termostatu.

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 IoT Edge typu przezroczysta brama. Po dodaniu urządzenia upewnij się, że wybrano manifest wdrożenia przezroczystej bramy . W tym artykule identyfikator urządzenia bramy to edgegateway.

  3. Dodaj jedno lub więcej wystąpień 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 pokazuje, że możesz zobaczyć listę urządzeń dołączonych do bramy na stronie Urządzenia podrzędne.

Zrzut ekranu przedstawiający listę urządzeń podrzędnych połączonych z przezroczystą bramą.

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 ID aplikacji 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łącz. 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:

Przycisk Wdróż na platformie Azure

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

  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:

    Zrzut ekranu przedstawiający moduły $edgeAgent i $edgeHub w wersji 1.4 uruchomione w bramie usługi IoT Edge.

    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 CA urządzenia, do którego odwołuje się plik konfiguracji IoT Edge. W scenariuszu gateway ten certyfikat urzędu certyfikacji jest sposobem, w jaki urządzenie usługi IoT Edge weryfikuje swoją tożsamość dla urządzeń 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 przyjęto założenie, że zalogowałeś się jako AzureUser i utworzono certyfikat urzędu certyfikacji dla 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.

Przygotuj 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 skonfigurować thermostat1 urządzenie podrzędne w aplikacji 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

Uwaga

Usługa IoT Central nie obsługuje uwierzytelniania certyfikatu X.509 dla urządzeń podrzędnych połączonych z przezroczystą bramą usługi IoT Edge.

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, który utworzyłeś na maszynie wirtualnej edgegateway. 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 urządzenia podrzędnego z bramą, zapoznaj się z Testowaniem 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 określają, ż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żywają nazwy urządzenia bramy, a nie nazwy IoT hubu.

  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 :

    Zrzut ekranu przedstawiający dane telemetryczne z urządzenia podrzędnego.

    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.