Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
usługi IoT Edge 1.1
Ważne
Data zakończenia wsparcia usługi IoT Edge 1.1 wynosiła 13 grudnia 2022 r. Sprawdź cykl życia produktu firmy Microsoft , aby uzyskać informacje na temat sposobu obsługi tego produktu, usługi, technologii lub interfejsu API. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji usługi IoT Edge, zobacz Aktualizowanie usługi IoT Edge.
W tym artykule ponownie użyjemy maszyny wirtualnej do dewelopmentu jako urządzenia symulowanego. Jednak zamiast wysyłać dane bezpośrednio do usługi IoT Hub, urządzenie wysyła dane do urządzenia usługi IoT Edge skonfigurowanego jako przezroczysta brama.
Monitorujemy działanie urządzenia usługi IoT Edge, gdy symulowane urządzenie wysyła dane. Po zakończeniu pracy urządzenia przyjrzymy się danym w naszym koncie magazynowym, aby sprawdzić, czy wszystko przebiegło zgodnie z oczekiwaniami.
Ten krok jest zwykle wykonywany przez dewelopera rozwiązań w chmurze lub urządzeń.
W tej sekcji samouczka dowiesz się, jak wykonywać następujące działania:
- Skompiluj i uruchom urządzenie podrzędne.
- Sprawdź, czy wygenerowane dane są przechowywane w usłudze Azure Blob Storage.
- Sprawdź, czy model uczenia maszynowego sklasyfikował dane urządzenia.
Wymagania wstępne
Ten artykuł jest częścią serii samouczka dotyczącego korzystania z usługi Azure Machine Learning w usłudze IoT Edge. Każdy artykuł z serii opiera się na pracy w poprzednim artykule. Jeśli dotarłeś bezpośrednio do tego artykułu, odwiedź pierwszy artykuł z serii .
Sprawdzenie uprzęży urządzenia
Ponownie użyj projektu DeviceHarness, aby symulować urządzenie podrzędne. Nawiązywanie połączenia z przezroczystą bramą wymaga dwóch dodatkowych rzeczy:
- Zarejestruj certyfikat, aby urządzenie IoT na niższym poziomie mogło zaufać urzędowi certyfikacji używanemu przez środowisko uruchomieniowe IoT Edge. W naszym przypadku urządzenie podrzędne jest maszyną wirtualną do rozwoju.
- Dodaj w pełni kwalifikowaną nazwę domeny bramy brzegowej (FQDN) do parametrów połączenia urządzenia.
Przyjrzyj się kodowi, aby zobaczyć, jak te dwa elementy są implementowane.
Na komputerze deweloperskim otwórz program Visual Studio Code.
Otwórz plik>w folderze... , aby otworzyć plik C:\source\IoTEdgeAndMlSample\DeviceHarness.
Przyjrzyj się metodzie InstallCertificate() w Program.cs.
Należy pamiętać, że jeśli kod znajdzie ścieżkę certyfikatu, wywołuje metodę CertificateManager.InstallCACert, aby zainstalować certyfikat na maszynie.
Teraz przyjrzyj się metodzie GetIotHubDevice w klasie TurbofanDevice.
Gdy użytkownik określa nazwę FQDN bramy przy użyciu opcji "-g", ta wartość jest przekazywana do tej metody jako
gatewayFqdnzmiennej, która jest dołączana do parametrów połączenia urządzenia.connectionString = $"{connectionString};GatewayHostName={gatewayFqdn.ToLower()}";
Kompilowanie i uruchamianie urządzenia podrzędnego
Po otwarciu projektu DeviceHarness w programie Visual Studio Code skompiluj projekt. W menu Terminal wybierz pozycję Uruchom zadanie kompilacji i wybierz pozycję Kompiluj.
Znajdź w pełni kwalifikowaną nazwę domeny (FQDN) dla bramy brzegowej, przechodząc do urządzenia IoT Edge (maszyna wirtualna z systemem Linux) w portalu Azure i kopiując wartość nazwy DNS ze strony przeglądu.
Uruchom urządzenie IoT (maszyna wirtualna z systemem Linux), jeśli nie jest jeszcze uruchomione.
Otwórz terminal programu Visual Studio Code. W menu Terminal wybierz pozycję Nowy terminal i uruchom następujące polecenie, zastępując ciąg
<edge_device_fqdn>nazwą DNS skopiowaną z urządzenia IoT Edge (wirtualna maszyna z systemem Linux):dotnet run -- --gateway-host-name "<edge_device_fqdn>" --certificate C:\edgecertificates\certs\azure-iot-test-only.root.ca.cert.pem --max-devices 1Aplikacja próbuje zainstalować certyfikat na komputerze deweloperskim. Gdy tak, zaakceptuj ostrzeżenie o zabezpieczeniach.
Po wyświetleniu monitu o parametry połączenia usługi IoT Hub kliknij wielokropek (...) na panelu urządzenia usługi Azure IoT Hub i wybierz pozycję Kopiuj parametry połączenia usługi IoT Hub. Wklej wartość do terminalu.
Zostaną wyświetlone dane wyjściowe, takie jak:
Found existing device: Client_001 Using device connection string: HostName=<your hub>.azure-devices.net;DeviceId=Client_001;SharedAccessKey=xxxxxxx; GatewayHostName=iotedge-xxxxxx.<region>.cloudapp.azure.com Device: 1 Message count: 50 Device: 1 Message count: 100 Device: 1 Message count: 150 Device: 1 Message count: 200 Device: 1 Message count: 250Zwróć uwagę na dodanie wartości "GatewayHostName" do parametrów połączenia urządzenia, co powoduje, że urządzenie komunikuje się za pośrednictwem usługi IoT Hub za pośrednictwem przezroczystej bramy usługi IoT Edge.
Sprawdzanie danych wyjściowych
Wyjście urządzenia IoT Edge
Wynik z modułu avroFileWriter można łatwo sprawdzić, patrząc na urządzenie IoT Edge.
Połącz się z maszyną wirtualną IoT Edge za pomocą SSH.
Poszukaj plików zapisanych na dysku.
find /data/avrofiles -type fDane wyjściowe polecenia będą wyglądać podobnie do następującego przykładu:
/data/avrofiles/2019/4/18/22/10.avroW zależności od czasu uruchomienia może istnieć więcej niż jeden plik.
Zwróć uwagę na sygnatury czasowe. Moduł avroFileWriter przekazuje pliki do chmury, gdy czas ostatniej modyfikacji przekracza 10 minut w przeszłości (zobacz MODIFIED_FILE_TIMEOUT w uploader.py w module avroFileWriter).
Po upływie 10 minut moduł powinien załadować pliki. Jeśli przekazywanie zakończy się pomyślnie, spowoduje to usunięcie plików z dysku.
Azure Storage
Możemy obserwować wyniki wysyłania danych przez nasze urządzenie podrzędne, sprawdzając konta magazynowe, do których spodziewamy się, że trafiają dane.
Na komputerze deweloperskim otwórz program Visual Studio Code.
W panelu "AZURE STORAGE" w oknie eksplorowania przejdź do drzewa, aby znaleźć konto magazynu.
Rozwiń węzeł Kontenery obiektów blob.
Z pracy wykonanej w poprzedniej części samouczka oczekujemy, że kontener ruldata powinien zawierać komunikaty z RUL. Rozwiń węzeł ruldata.
Zobaczysz jeden lub więcej plików blob nazwanych jako:
<IoT Hub Name>/<partition>/<year>/<month>/<day>/<hour>/<minute>.Kliknij prawym przyciskiem myszy jeden z plików i wybierz Pobierz obiekt blob, aby zapisać plik na komputerze deweloperskim.
Następnie rozwiń węzeł uploadturbofanfiles . W poprzednim artykule ustawiliśmy tę lokalizację jako miejsce docelowe dla plików przekazanych przez moduł avroFileWriter.
Kliknij prawym przyciskiem myszy pliki i wybierz polecenie Pobierz obiekt blob , aby zapisać go na maszynie dewelopera.
Odczytywanie zawartości pliku Avro
Dołączyliśmy proste narzędzie wiersza polecenia do odczytywania pliku Avro i zwracania ciągu JSON komunikatów w pliku. W tej sekcji zainstalujemy ją i uruchomimy.
Otwórz terminal w programie Visual Studio Code (terminal>nowy terminal).
Zainstaluj usługę hubavroreader:
pip install c:\source\IoTEdgeAndMlSample\HubAvroReaderUżyj elementu hubavroreader, aby odczytać plik Avro pobrany z ruldata.
hubavroreader <avro file with ath> | moreZwróć uwagę, że treść komunikatu wygląda zgodnie z oczekiwaniami, zawierając identyfikator urządzenia i przewidywany STW.
{ "Body": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CycleTime": 1.0, "PredictedRul": 170.1723693909444 }, "EnqueuedTimeUtc": "<time>", "Properties": { "ConnectionDeviceId": "Client_001", "CorrelationId": "3d0bc256-b996-455c-8930-99d89d351987", "CreationTimeUtc": "01/01/0001 00:00:00", "EnqueuedTimeUtc": "01/01/0001 00:00:00" }, "SystemProperties": { "connectionAuthMethod": "{\"scope\":\"module\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}", "connectionDeviceGenerationId": "636857841798304970", "connectionDeviceId": "aaTurbofanEdgeDevice", "connectionModuleId": "turbofanRouter", "contentEncoding": "utf-8", "contentType": "application/json", "correlationId": "3d0bc256-b996-455c-8930-99d89d351987", "enqueuedTime": "<time>", "iotHubName": "mledgeiotwalkthroughhub" } }Uruchom to samo polecenie, przekazując plik Avro pobrany z uploadturbofanfiles.
Zgodnie z oczekiwaniami te komunikaty zawierają wszystkie dane czujnika i ustawienia operacyjne z oryginalnego komunikatu. Te dane mogą służyć do ulepszania modelu RUL na naszym urządzeniu brzegowym.
{ "Body": { "CycleTime": 1.0, "OperationalSetting1": -0.0005000000237487257, "OperationalSetting2": 0.00039999998989515007, "OperationalSetting3": 100.0, "PredictedRul": 170.17236328125, "Sensor1": 518.6699829101562, "Sensor10": 1.2999999523162842, "Sensor11": 47.29999923706055, "Sensor12": 522.3099975585938, "Sensor13": 2388.010009765625, "Sensor14": 8145.31982421875, "Sensor15": 8.424599647521973, "Sensor16": 0.029999999329447746, "Sensor17": 391.0, "Sensor18": 2388.0, "Sensor19": 100.0, "Sensor2": 642.3599853515625, "Sensor20": 39.11000061035156, "Sensor21": 23.353700637817383, "Sensor3": 1583.22998046875, "Sensor4": 1396.8399658203125, "Sensor5": 14.619999885559082, "Sensor6": 21.610000610351562, "Sensor7": 553.969970703125, "Sensor8": 2387.9599609375, "Sensor9": 9062.169921875 }, "ConnectionDeviceId": "Client_001", "CorrelationId": "70df0c98-0958-4c8f-a422-77c2a599594f", "CreationTimeUtc": "0001-01-01T00:00:00+00:00", "EnqueuedTimeUtc": "<time>" }
Uprzątnij zasoby
Jeśli planujesz eksplorować zasoby wykorzystywane w tym kompleksowym samouczku, poczekaj z ich usuwaniem lub porządkowaniem do momentu zakończenia pracy. W przeciwnym razie wykonaj następujące kroki, aby je usunąć:
Usuń utworzoną grupę (lub grupy) zasobów przeznaczoną/e do przechowywania maszyny wirtualnej deweloperskiej, maszyny wirtualnej IoT Edge, usługi IoT Hub, konta magazynu oraz usługi obszaru roboczego uczenia maszynowego (oraz utworzone zasoby: rejestr kontenerów, Application Insights, magazyn kluczy, konto magazynu).
Usuń projekt uczenia maszynowego w usłudze Azure Notebooks.
Jeśli sklonujesz repozytorium lokalnie, zamknij wszystkie okna programu PowerShell lub PROGRAMU VS Code odwołujące się do repozytorium lokalnego, a następnie usuń katalog repozytorium.
Jeśli certyfikaty zostały utworzone lokalnie, usuń folder c:\edgeCertificates.
Dalsze kroki
W tym artykule użyliśmy maszyny wirtualnej deweloperskiej do symulowania podrzędnego urządzenia wysyłającego dane z czujników i operacyjne do naszego urządzenia IoT Edge. Sprawdziliśmy, czy moduły na urządzeniu routują, klasyfikują, utrwalają i przesyłają dane, sprawdzając działanie urządzenia brzegowego w czasie rzeczywistym i przeglądając pliki przesłane na konto magazynowe.
Aby kontynuować naukę o możliwościach usługi IoT Edge, wypróbuj następujący samouczek: