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:
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 Zabezpieczenia najlepszych rozwiązań > zabezpieczeń Zabezpieczenia zabezpieczeń Zabezpieczenia zabezpieczeń.
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:
Aktywna subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Aplikacja usługi IoT Central utworzona na podstawie szablonu aplikacji niestandardowej. Aby dowiedzieć się więcej, zobacz Tworzenie aplikacji usługi IoT Central.
Aby wykonać kroki opisane w tym artykule, pobierz następujące pliki na komputer:
- Model urządzenia termostatu (thermostat-1.json) — ten plik jest modelem urządzenia dla urządzeń podrzędnych.
- Manifest przezroczystej bramy (EdgeTransparentGatewayManifest.json) — ten plik jest manifestem wdrożenia usługi IoT Edge dla urządzenia bramy.
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:
Przejdź do manifestów usługi Edge.
Wybierz pozycję + Nowy, wprowadź nazwę manifestu wdrożenia, na przykład Przezroczysta brama , a następnie przekaż pobrany wcześniej plik EdgeTransparentGatewayManifest.json .
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:
Utwórz szablon urządzenia i wybierz urządzenie IoT jako typ szablonu.
Na stronie Dostosowywanie kreatora wprowadź nazwę, taką jak Termostat dla szablonu urządzenia.
Po utworzeniu szablonu urządzenia wybierz pozycję Importuj model. Wybierz model, taki jak pobrany wcześniej plik thermostat-1.json .
Aby wygenerować widoki domyślne dla termostatu, wybierz widoki, a następnie wybierz pozycję Generuj widoki domyślne.
Publikowanie szablonu urządzenia.
Aby utworzyć szablon urządzenia dla urządzenia przezroczystej bramy usługi IoT Edge:
Utwórz szablon urządzenia i wybierz usługę Azure IoT Edge jako typ szablonu.
Na stronie Dostosowywanie kreatora wprowadź nazwę, taką jak brama usługi Edge dla szablonu urządzenia.
Na stronie Dostosowywanie kreatora sprawdź, czy jest to urządzenie bramy.
Na stronie Przegląd wybierz pozycję Utwórz.
Na stronie Tworzenie modelu wybierz pozycję Model niestandardowy.
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 :
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:
Przejdź do strony urządzenia w aplikacji usługi IoT Central.
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
.Dodaj co najmniej jedno wystąpienie urządzenia podrzędnego. W tym artykule urządzenia podrzędne to termostaty z identyfikatorami
thermostat1
ithermostat2
.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:
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łą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:
Po wdrożeniu i uruchomieniu dwóch maszyn wirtualnych sprawdź, czy urządzenie bramy usługi IoT Edge jest uruchomione na maszynie edgegateway
wirtualnej:
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.
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:
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:
Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie wirtualnej urządzenia bramy.
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.
Otwórz plik config.toml w edytorze tekstów. Na przykład:
sudo nano /etc/aziot/config.toml
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".
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:
Uruchom następujące polecenie, aby zainstalować
azure.iot.device
moduł:pip install azure.iot.device
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
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 stan thermostat1
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:
Użyj protokołu SSH, aby nawiązać połączenie i zalogować się na maszynie
leafdevice
wirtualnej.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
Zainstaluj moduł Python urządzenia Azure IoT:
sudo apt update sudo apt install python3-pip pip3 install azure.iot.device
Ustaw zmienne środowiskowe, aby skonfigurować przykład. Zastąp
{your device shared key}
ciąg kluczemthermostat1
podstawowym zanotuj wcześniej. Te zmienne zakładają, że nazwa maszyny wirtualnej bramy toedgegateway
, a identyfikator urządzenia termostatu tothermostat1
: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.
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.
Aby wyświetlić dane telemetryczne w usłudze IoT Central, przejdź do strony Przegląd urządzenia termostat1 :
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.