Samouczek: tworzenie modułów IoT Edge przy użyciu kontenerów systemu Windows

Dotyczy ikony:tak IoT Edge 1.1

Ważne

IoT Edge 1.1 data zakończenia wsparcia technicznego wynosiła 13 grudnia 2022 r. Zapoznaj się z cyklem życia produktów firmy Microsoft, aby uzyskać informacje na temat sposobu obsługi tego produktu lub interfejsu API albo tej usługi lub technologii. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji IoT Edge, zobacz Update IoT Edge.

Użyj programu Visual Studio, aby opracowywać i wdrażać kod na urządzeniach z systemem Windows z systemem IoT Edge.

Uwaga

IoT Edge 1.1 LTS to ostatni kanał wersji obsługujący kontenery systemu Windows. Począwszy od wersji 1.2, kontenery systemu Windows nie są obsługiwane. Rozważ użycie lub przejście do IoT Edge dla systemu Linux w systemie Windows, aby uruchomić IoT Edge na urządzeniach z systemem Windows.

Ten samouczek przeprowadzi Cię przez proces tworzenia i wdrażania własnego kodu na urządzeniu IoT Edge. Ten samouczek jest przydatnym wymaganiem wstępnym dla innych samouczków, które bardziej szczegółowo opisują określone języki programowania lub usługi platformy Azure.

W tym samouczku użyto przykładu wdrażania modułu C# na urządzeniu z systemem Windows. Ten przykład został wybrany, ponieważ jest to najbardziej typowy scenariusz programowania. Jeśli interesuje Cię programowanie w innym języku lub planowanie wdrażania usług platformy Azure jako modułów, ten samouczek będzie nadal pomocny, aby dowiedzieć się więcej o narzędziach programistycznych. Po zrozumieniu pojęć związanych z programowaniem możesz wybrać preferowany język lub usługę platformy Azure, aby zapoznać się ze szczegółami.

Ten samouczek zawiera informacje na temat wykonywania następujących czynności:

  • Skonfiguruj maszynę dewelopera.
  • Użyj narzędzi IoT Edge dla programu Visual Studio, aby utworzyć nowy projekt.
  • Skompiluj projekt jako kontener i zapisz go w rejestrze kontenerów platformy Azure.
  • Wdróż kod na urządzeniu IoT Edge.

Wymagania wstępne

Maszyna deweloperna:

  • Windows 10 z aktualizacją 1809 lub nowszą.
  • Możesz użyć własnego komputera lub maszyny wirtualnej, w zależności od preferencji programistycznych.
    • Upewnij się, że maszyna deweloperna obsługuje wirtualizację zagnieżdżonych. Ta możliwość jest niezbędna do uruchomienia aparatu kontenera, który zostanie zainstalowany w następnej sekcji.
  • Zainstaluj usługę Git.

Urządzenie azure IoT Edge w systemie Windows:

Zasoby w chmurze:

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Kluczowe pojęcia

Ten samouczek przeprowadzi Cię przez proces opracowywania modułu IoT Edge. Moduł IoT Edge, a czasami po prostu krótki moduł, jest kontenerem zawierającym kod wykonywalny. Na urządzeniu IoT Edge można wdrożyć co najmniej jeden moduł. Moduły wykonują określone zadania, takie jak pozyskiwanie danych z czujników, wykonywanie analiz danych lub operacje czyszczenia danych lub wysyłanie komunikatów do centrum IoT. Aby uzyskać więcej informacji, zobacz Omówienie modułów usługi Azure IoT Edge.

Podczas opracowywania modułów IoT Edge ważne jest zrozumienie różnicy między maszyną dewelopera a docelowym urządzeniem IoT Edge, na którym moduł zostanie ostatecznie wdrożony. Kontener, który tworzysz do przechowywania kodu modułu, musi być zgodny z systemem operacyjnym urządzenia docelowego. W przypadku tworzenia kontenerów systemu Windows ta koncepcja jest prostsza, ponieważ kontenery systemu Windows działają tylko w systemach operacyjnych Windows. Można jednak na przykład użyć maszyny deweloperów z systemem Windows do kompilowania modułów dla urządzeń z systemem Linux IoT Edge. W tym scenariuszu należy upewnić się, że na maszynie deweloperów uruchomiono kontenery systemu Linux. Podczas pracy z tym samouczkiem należy pamiętać o różnicy między systemem operacyjnym maszyny dewelopera i systemem operacyjnym kontenera.

Ten samouczek jest przeznaczony dla urządzeń z systemem Windows z systemem IoT Edge. Urządzenia z systemem Windows IoT Edge używają kontenerów systemu Windows. Zalecamy używanie programu Visual Studio do tworzenia aplikacji dla urządzeń z systemem Windows, aby użyć tego samouczka. Można również użyć Visual Studio Code, chociaż istnieją różnice w obsłudze między dwoma narzędziami.

W poniższej tabeli wymieniono obsługiwane scenariusze programowania dla kontenerów systemu Windows w Visual Studio Code i programie Visual Studio.

Visual Studio Code Visual Studio 2017/2019
Usługi platformy Azure Azure Functions
Usługa Azure Stream Analytics
Języki C# (debugowanie nie jest obsługiwane) C
C#
Więcej informacji Usługa Azure IoT Edge dla Visual Studio Code
Azure IoT Hub
Azure IoT Edge Tools dla programu Visual Studio 2017
Azure IoT Edge Tools dla programu Visual Studio 2019

Instalowanie aparatu kontenera

IoT Edge moduły są pakowane jako kontenery, dlatego do kompilowania kontenerów i zarządzania nimi potrzebny jest aparat kontenerów na komputerze deweloperskim. Zalecamy używanie programu Docker Desktop do programowania ze względu na wiele funkcji i popularności jako aparatu kontenera. Za pomocą programu Docker Desktop na komputerze z systemem Windows można przełączać się między kontenerami systemu Linux i kontenerami systemu Windows, aby można było łatwo opracowywać moduły dla różnych typów urządzeń IoT Edge.

Użyj dokumentacji platformy Docker, aby zainstalować na maszynie deweloperów:

Konfigurowanie programu Visual Studio i narzędzi

Rozszerzenia IoT dla programu Visual Studio ułatwiają opracowywanie modułów IoT Edge. Te rozszerzenia udostępniają szablony projektów, automatyzują tworzenie manifestu wdrożenia i umożliwiają monitorowanie urządzeń IoT Edge i zarządzanie nimi. W tej sekcji zainstalujesz program Visual Studio i rozszerzenie IoT Edge, a następnie skonfigurujesz konto platformy Azure, aby zarządzać IoT Hub zasobami z poziomu programu Visual Studio.

W tym samouczku przedstawiono kroki programistyczne dla programu Visual Studio 2019. Jeśli używasz programu Visual Studio 2017 (wersja 15.7 lub nowsza), kroki są podobne. Jeśli wolisz używać Visual Studio Code, zapoznaj się z instrukcjami w temacie Używanie Visual Studio Code do opracowywania i debugowania modułów dla usługi Azure IoT Edge.

  1. Przygotuj program Visual Studio 2019 na komputerze deweloperskim.

    • Jeśli nie masz jeszcze programu Visual Studio na komputerze deweloperskim, zainstaluj program Visual Studio 2019 z następującymi obciążeniami:

      • Tworzenie aplikacji na platformie Azure
      • Programowanie aplikacji klasycznych w języku C++
      • Programowanie dla wielu platform w środowisku .NET Core
    • Jeśli masz już program Visual Studio 2019 na komputerze deweloperskim, wykonaj kroki opisane w temacie Modyfikowanie programu Visual Studio , aby dodać wymagane obciążenia.

  2. Pobierz i zainstaluj rozszerzenie Azure IoT Edge Tools dla programu Visual Studio 2019.

    Jeśli używasz programu Visual Studio 2017 (w wersji 15.7 lub nowszej), pobierz i zainstaluj Azure IoT Edge Tools dla programu Visual Studio 2017.

  3. Po zakończeniu instalacji otwórz program Visual Studio 2019 i wybierz pozycję Kontynuuj bez kodu.

  4. Wybierz pozycję Wyświetl>Eksplorator chmury.

  5. Wybierz ikonę profilu w eksploratorze chmury i zaloguj się do konta platformy Azure, jeśli jeszcze nie zalogowano się.

  6. Po zalogowaniu zostaną wyświetlone subskrypcje platformy Azure. Rozwiń subskrypcję, która ma centrum IoT Hub.

  7. W ramach subskrypcji rozwiń węzeł IoT Hubs , a następnie centrum IoT Hub. Powinna zostać wyświetlona lista urządzeń IoT i może użyć tego eksploratora do zarządzania nimi.

    Uzyskiwanie dostępu do zasobów IoT Hub w usłudze Cloud Explorer

Tworzenie rejestru kontenerów

W tym samouczku utworzysz moduł i utworzysz obraz kontenera z plików. Następnie ten obraz zostanie wypchnięty do rejestru, w którym obrazy są przechowywane i zarządzane. Na koniec obraz zostanie wdrożony z rejestru w celu uruchomienia na urządzeniu usługi IoT Edge.

Do przechowywania obrazów kontenerów możesz użyć dowolnego rejestru zgodnego z platformą Docker. Dwie popularne usługi rejestru Docker to Azure Container Registry i Docker Hub. W tym samouczku używana jest usługa Azure Container Registry.

Jeśli nie masz jeszcze rejestru kontenerów, wykonaj następujące kroki, aby utworzyć nowy rejestr na platformie Azure:

  1. W witrynie Azure Portal wybierz kolejno pozycje Utwórz zasób>Kontenery>Container Registry.

  2. Podaj następujące wartości, aby utworzyć rejestr kontenerów:

    Pole Wartość
    Subskrypcja Wybierz subskrypcję z listy rozwijanej.
    Grupa zasobów Zalecamy używanie tej samej grupy zasobów dla wszystkich zasobów testowych tworzonych podczas pracy z przewodnikami Szybki Start i samouczkami usługi IoT Edge. Na przykład IoTEdgeResources.
    Nazwa rejestru Podaj unikatową nazwę.
    Lokalizacja Wybierz bliską lokalizację.
    SKU Wybierz pozycję Podstawowa.
  3. Wybierz przycisk Utwórz.

  4. Wybierz nowo utworzony rejestr kontenerów w sekcji Zasoby na stronie głównej Azure Portal, aby ją otworzyć.

  5. W okienku po lewej stronie rejestru kontenerów wybierz pozycję Klucze dostępu z menu znajdującego się w obszarze Ustawienia.

  6. Włącz Administracja użytkownika za pomocą przycisku przełącznika i wyświetl nazwę użytkownika i hasło dla rejestru kontenerów.

  7. Skopiuj wartości dla serwera logowania, nazwy użytkownika i hasła i zapisz je gdzieś wygodnie. Te wartości są używane w tym samouczku, aby zapewnić dostęp do rejestru kontenerów.

Twórca nowy projekt modułu

Rozszerzenie Azure IoT Edge Tools udostępnia szablony projektów dla wszystkich obsługiwanych języków modułów IoT Edge w programie Visual Studio. Te szablony mają wszystkie pliki i kod, które należy wdrożyć w module roboczym, aby przetestować IoT Edge, lub dać punkt wyjścia, aby dostosować szablon przy użyciu własnej logiki biznesowej.

  1. Wybierz pozycję Plik>nowy>projekt...

  2. W nowym oknie projektu wyszukaj IoT Edge i wybierz projekt Azure IoT Edge (Windows amd64). Kliknij przycisk Dalej.

    Twórca nowy projekt usługi Azure IoT Edge

  3. W oknie konfigurowania nowego projektu zmień nazwę projektu i rozwiązania na opisową aplikację CSharpTutorialApp. Kliknij Twórca, aby utworzyć projekt.

    Konfigurowanie nowego projektu usługi Azure IoT Edge

  4. W oknie Dodawanie modułu skonfiguruj projekt przy użyciu następujących wartości:

    Pole Wartość
    Szablon programu Visual Studio Wybierz pozycję Moduł języka C#.
    Nazwa modułu Zaakceptuj domyślną wartość IotEdgeModule1.
    Adres URL repozytorium Repozytorium obrazów zawiera nazwę rejestru kontenerów oraz nazwę obrazu kontenera. Obraz kontenera jest wstępnie wypełniany z wartości nazwy projektu modułu. Zastąp wartość localhost:5000 wartością serwera logowania z rejestru kontenerów platformy Azure. Wartość serwera logowania można pobrać ze strony Przegląd rejestru kontenerów w Azure Portal.

    Końcowe repozytorium obrazów wygląda następująco: <nazwa> rejestru.azurecr.io/iotedgemodule1.

    Konfigurowanie projektu dla urządzenia docelowego, typu modułu i rejestru kontenerów

  5. Wybierz pozycję Dodaj , aby utworzyć moduł.

Po załadowaniu nowego projektu w oknie programu Visual Studio poświęć chwilę, aby zapoznać się z utworzonymi plikami:

  • Projekt IoT Edge o nazwie CSharpTutorialApp.
    • Folder Modules zawiera wskaźniki do modułów zawartych w projekcie. W tym przypadku powinien to być tylko IotEdgeModule1.
    • Ukryty plik env przechowuje poświadczenia w rejestrze kontenerów. Te poświadczenia są udostępniane urządzeniu IoT Edge, aby mieć dostęp do ściągania obrazów kontenerów.
    • Plik deployment.template.json to szablon, który ułatwia tworzenie manifestu wdrożenia. Manifest wdrożenia to plik, który definiuje dokładnie moduły, które chcesz wdrożyć na urządzeniu, sposób ich konfigurowania oraz sposób komunikowania się ze sobą i chmurą.

      Porada

      W sekcji poświadczenia rejestru adres jest wypełniany automatycznie z informacji podanych podczas tworzenia rozwiązania. Jednak zmienne referencyjne nazwy użytkownika i hasła przechowywane w pliku env. Jest to przeznaczone dla zabezpieczeń, ponieważ plik env jest ignorowany przez usługę Git, ale szablon wdrożenia nie jest.

  • Projekt modułu IoT Edge o nazwie IotEdgeModule1.
    • Plik program.cs zawiera domyślny kod modułu języka C#, który jest dostarczany z szablonem projektu. Domyślny moduł pobiera dane wejściowe ze źródła i przekazuje go do IoT Hub.
    • Plik module.json zawiera szczegółowe informacje o module, w tym pełne repozytorium obrazów, wersję obrazu i plik Dockerfile do użycia dla każdej obsługiwanej platformy.

Ustawianie wersji środowiska uruchomieniowego IoT Edge

Rozszerzenie IoT Edge jest domyślne dla najnowszej stabilnej wersji środowiska uruchomieniowego IoT Edge podczas tworzenia zasobów wdrożenia.

Kontenery systemu Windows są obsługiwane tylko w wersji długoterminowej pomocy technicznej 1.1 lub starszej wersji 1.0. Aby opracowywać moduły dla urządzeń korzystających z kontenerów systemu Windows, zaktualizuj wersję środowiska uruchomieniowego IoT Edge w programie Visual Studio, aby dopasować wersję IoT Edge na tych urządzeniach.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu i wybierz pozycję Ustaw wersję środowiska uruchomieniowego IoT Edge.

    Kliknij prawym przyciskiem myszy nazwę projektu i wybierz pozycję ustaw wersję środowiska uruchomieniowego IoT Edge.

  2. Użyj menu rozwijanego, aby wybrać wersję środowiska uruchomieniowego uruchomioną na IoT Edge urządzeniach, a następnie wybierz przycisk OK, aby zapisać zmiany.

  3. Ponownie wygeneruj manifest wdrożenia przy użyciu nowej wersji środowiska uruchomieniowego. Kliknij prawym przyciskiem myszy nazwę projektu i wybierz pozycję Generuj wdrożenie dla IoT Edge.

Podaj poświadczenia rejestru agentowi IoT Edge

Środowisko uruchomieniowe IoT Edge wymaga poświadczeń rejestru w celu ściągnięcia obrazów kontenera na urządzenie IoT Edge. Rozszerzenie IoT Edge próbuje ściągnąć informacje o rejestrze kontenerów z platformy Azure i wypełnić je w szablonie wdrożenia.

  1. Otwórz plik deployment.template.json w rozwiązaniu modułu.

  2. Znajdź właściwość registryCredentials w $edgeAgent żądanych właściwości. Adres rejestru powinien zostać automatycznie wypełniony z informacji podanych podczas tworzenia projektu, a następnie pola nazwy użytkownika i hasła powinny zawierać nazwy zmiennych. Na przykład:

    "registryCredentials": {
      "<registry name>": {
        "username": "$CONTAINER_REGISTRY_USERNAME_<registry name>",
        "password": "$CONTAINER_REGISTRY_PASSWORD_<registry name>",
        "address": "<registry name>.azurecr.io"
      }
    }
    
  3. Otwórz plik env w rozwiązaniu modułu. (Domyślnie jest ona ukryta w Eksplorator rozwiązań, więc może być konieczne wybranie przycisku Pokaż wszystkie pliki, aby go wyświetlić).

  4. Dodaj wartości Nazwa użytkownika i Hasło skopiowane z rejestru kontenerów platformy Azure.

  5. Zapisz zmiany w pliku env.

Uwaga

W tym samouczku są używane poświadczenia logowania administratora dla Azure Container Registry, które są wygodne w scenariuszach programowania i testowania. Gdy wszystko będzie gotowe do użycia w scenariuszach produkcyjnych, zalecamy skorzystanie z opcji uwierzytelniania o najmniejszym poziomie uprawnień, takiej jak jednostki usługi. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do rejestru kontenerów.

Przejrzyj przykładowy kod

Utworzony szablon rozwiązania zawiera przykładowy kod modułu IoT Edge. Ten przykładowy moduł po prostu odbiera komunikaty, a następnie przekazuje je dalej. Funkcja potoku przedstawia ważną koncepcję w IoT Edge, która polega na tym, jak moduły komunikują się ze sobą.

Każdy moduł może mieć wiele kolejek wejściowych i wyjściowych zadeklarowanych w kodzie. Centrum IoT Edge uruchomione na urządzeniu kieruje komunikaty z danych wyjściowych jednego modułu do danych wejściowych co najmniej jednego modułu. Konkretny kod do deklarowania danych wejściowych i wyjściowych różni się między językami, ale koncepcja jest taka sama we wszystkich modułach. Aby uzyskać więcej informacji na temat routingu między modułami, zobacz Deklarowanie tras.

Przykładowy kod języka C# dostarczany z szablonem projektu używa klasy ModuleClient z zestawu SDK IoT Hub dla platformy .NET.

  1. W pliku program.cs znajdź metodę SetInputMessageHandlerAsync .

  2. Metoda SetInputMessageHandlerAsync konfiguruje kolejkę wejściową w celu odbierania komunikatów przychodzących. Przejrzyj tę metodę i zobacz, jak inicjuje kolejkę wejściową o nazwie input1.

    Znajdź nazwę danych wejściowych w konstruktorze SetInputMessageHandlserAsync

  3. Następnie znajdź metodę SendEventAsync .

  4. Metoda SendEventAsync przetwarza komunikaty i konfiguruje kolejkę wyjściową, aby je przekazać. Przejrzyj tę metodę i sprawdź, czy inicjuje kolejkę wyjściową o nazwie output1.

    Znajdź nazwę danych wyjściowych w konstruktorze SendEventAsync

  5. Otwórz plik deployment.template.json .

  6. Znajdź właściwość modules żądanej właściwości $edgeAgent.

    W tym miejscu powinny znajdować się dwa moduły. Jednym z nich jest moduł SimulatedTemperatureSensor , który jest domyślnie dołączony do wszystkich szablonów, aby zapewnić symulowane dane temperatury, których można użyć do testowania modułów. Drugi to moduł IotEdgeModule1 utworzony w ramach tego projektu.

    Ta właściwość modułów deklaruje, które moduły powinny być uwzględnione we wdrożeniu na urządzeniu lub urządzeniach.

  7. Znajdź właściwość routes żądanej właściwości $edgeHub.

    Jedną z funkcji modułu centrum IoT Edge jest kierowanie komunikatów między wszystkimi modułami we wdrożeniu. Przejrzyj wartości we właściwości routes. Jedna trasa , IotEdgeModule1ToIoTHub, używa symbolu wieloznakowego (*) do uwzględnienia dowolnego komunikatu pochodzącego z dowolnej kolejki wyjściowej w module IotEdgeModule1. Te komunikaty przechodzą do $upstream, która jest nazwą zarezerwowaną wskazującą IoT Hub. Druga trasa, sensorToIotEdgeModule1, pobiera komunikaty pochodzące z modułu SimulatedTemperatureSensor i kieruje je do kolejki wejściowej input1 modułu IotEdgeModule1.

    Przeglądanie tras w deployment.template.json

Kompilowanie i wypychanie rozwiązania

Zapoznaliśmy się z kodem modułu i szablonem wdrożenia, aby zrozumieć niektóre kluczowe pojęcia związane z wdrażaniem. Teraz możesz utworzyć obraz kontenera IotEdgeModule1 i wypchnąć go do rejestru kontenerów. Dzięki rozszerzeniu narzędzi IoT dla programu Visual Studio ten krok generuje również manifest wdrożenia na podstawie informacji w pliku szablonu i informacji o module z plików rozwiązania.

Zaloguj się do platformy Docker

Podaj poświadczenia rejestru kontenerów na platformie Docker na komputerze deweloperskim, aby można było wypchnąć obraz kontenera do przechowywania w rejestrze.

  1. Otwórz program PowerShell lub wiersz polecenia.

  2. Zaloguj się do platformy Docker przy użyciu poświadczeń rejestru kontenerów platformy Azure zapisanych po utworzeniu rejestru.

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    Może zostać wyświetlone ostrzeżenie o zabezpieczeniach, które zaleca użycie polecenia --password-stdin. Chociaż najlepsze rozwiązanie jest zalecane w przypadku scenariuszy produkcyjnych, wykracza poza zakres tego samouczka. Aby uzyskać więcej informacji, zobacz dokumentację logowania platformy Docker .

Kompilowanie i wypychanie

Maszyna deweloperza ma teraz dostęp do rejestru kontenerów, a urządzenia IoT Edge też będą. Nadszedł czas, aby przekształcić kod projektu w obraz kontenera.

  1. Kliknij prawym przyciskiem myszy folder projektu CSharpTutorialApp i wybierz polecenie Kompiluj i wypychaj moduły IoT Edge.

    Kompilowanie i wypychanie modułów IoT Edge

    Polecenie kompilacji i wypychania uruchamia trzy operacje. Najpierw tworzy nowy folder w rozwiązaniu o nazwie config , który przechowuje pełny manifest wdrożenia, utworzony z informacji w szablonie wdrożenia i innych plikach rozwiązania. Po drugie jest uruchamiany docker build w celu skompilowania obrazu kontenera na podstawie odpowiedniego pliku dockerfile dla architektury docelowej. Następnie zostanie uruchomione polecenie docker push , aby wypchnąć repozytorium obrazów do rejestru kontenerów.

    Ten proces może potrwać kilka minut po raz pierwszy, ale jest szybszy przy następnym uruchomieniu poleceń.

  2. Otwórz plik deployment.windows-amd64.json w nowo utworzonym folderze konfiguracji. (Folder config może nie pojawić się w Eksplorator rozwiązań w programie Visual Studio. Jeśli tak jest, wybierz ikonę Pokaż wszystkie pliki na pasku zadań Eksplorator rozwiązań).

  3. Znajdź parametr obrazu sekcji IotEdgeModule1. Zwróć uwagę, że obraz zawiera pełne repozytorium obrazów z nazwą, wersją i tagiem architektury z pliku module.json.

  4. Otwórz plik module.json w folderze IotEdgeModule1.

  5. Zmień numer wersji obrazu modułu. (Wersja, a nie wersja $schema).) Na przykład zwiększ numer wersji poprawki do wersji 0.0.2 , tak jakbyśmy wprowadzili niewielką poprawkę w kodzie modułu.

    Porada

    Wersje modułów umożliwiają kontrolę wersji i umożliwiają testowanie zmian na małym zestawie urządzeń przed wdrożeniem aktualizacji w środowisku produkcyjnym. Jeśli nie zwiększasz wersji modułu przed utworzeniem i wypchnięciem, zastąpisz repozytorium w rejestrze kontenerów.

  6. Zapisz zmiany w pliku module.json.

  7. Ponownie kliknij prawym przyciskiem myszy folder projektu CSharpTutorialApp, a następnie ponownie wybierz polecenie Kompiluj i wypychaj moduły IoT Edge.

  8. Otwórz ponownie plik deployment.windows-amd64.json . Zwróć uwagę, że podczas ponownego uruchamiania kompilacji i wypychania polecenia nie utworzono nowego pliku. Zamiast tego ten sam plik został zaktualizowany, aby odzwierciedlić zmiany. Obraz IotEdgeModule1 wskazuje teraz wersję kontenera 0.0.2. Ta zmiana w manifeście wdrożenia polega na tym, jak poinformować IoT Edge urządzeniu o nowej wersji modułu do ściągnięcia.

  9. Aby dokładniej sprawdzić, co zrobiło polecenie kompilacji i wypychania, przejdź do Azure Portal i przejdź do rejestru kontenerów.

  10. W rejestrze kontenerów wybierz pozycję Repozytoria , a następnie iotedgemodule1. Sprawdź, czy obie wersje obrazu zostały wypchnięte do rejestru.

    Wyświetlanie obu wersji obrazów w rejestrze kontenerów

Rozwiązywanie problemów

Jeśli wystąpią błędy podczas kompilowania i wypychania obrazu modułu, często musi to mieć związek z konfiguracją platformy Docker na maszynie dewelopera. Użyj następujących testów, aby przejrzeć konfigurację:

  • Czy polecenie zostało uruchomione docker login przy użyciu poświadczeń skopiowanych z rejestru kontenerów? Te poświadczenia różnią się od tych, których używasz do logowania się na platformie Azure.
  • Czy używasz właściwego repozytorium kontenerów? Czy ma poprawną nazwę rejestru kontenerów i poprawną nazwę modułu? Otwórz plik module.json w folderze IotEdgeModule1, aby sprawdzić. Wartość repozytorium powinna wyglądać następująco: <nazwa> rejestru.azurecr.io/iotedgemodule1.
  • Jeśli dla modułu użyto innej nazwy niż IotEdgeModule1 , czy nazwa jest spójna w całym rozwiązaniu?
  • Czy na maszynie jest uruchomiony ten sam typ kontenerów, które tworzysz? Ten samouczek dotyczy urządzeń z systemem Windows IoT Edge, więc pliki programu Visual Studio powinny mieć rozszerzenie windows-amd64, a program Docker Desktop powinien mieć uruchomione kontenery systemu Windows.

Wdrażanie modułów na urządzeniu

Sprawdzono, że utworzone obrazy kontenerów są przechowywane w rejestrze kontenerów, więc nadszedł czas, aby wdrożyć je na urządzeniu. Upewnij się, że urządzenie IoT Edge jest uruchomione.

  1. Otwórz eksploratora chmury w programie Visual Studio i rozwiń szczegóły centrum IoT Hub.

  2. Wybierz nazwę urządzenia, do którego chcesz wdrożyć. Na liście Akcje wybierz pozycję Twórca Wdrożenie.

    Tworzenie wdrożenia dla pojedynczego urządzenia

  3. W Eksploratorze plików przejdź do folderu config projektu i wybierz plik deployment.windows-amd64.json . Ten plik często znajduje się w lokalizacji C:\Users\<username>\source\repos\CSharpTutorialApp\CSharpTutorialApp\config\deployment.windows-amd64.json

    Nie należy używać pliku deployment.template.json, który nie zawiera pełnych wartości obrazu modułu.

  4. Rozwiń szczegóły dotyczące urządzenia IoT Edge w usłudze Cloud Explorer, aby wyświetlić moduły na urządzeniu.

  5. Użyj przycisku Odśwież , aby zaktualizować stan urządzenia, aby zobaczyć, że moduły SimulatedTemperatureSensor i IotEdgeModule1 są wdrażane na urządzeniu.

    Wyświetlanie modułów uruchomionych na urządzeniu IoT Edge

Wyświetlanie komunikatów z urządzenia

Kod IotEdgeModule1 odbiera komunikaty za pośrednictwem kolejki wejściowej i przekazuje je przez kolejkę wyjściową. Manifest wdrożenia zadeklarował trasy przekazujące komunikaty z simulatedTemperatureSensor do IotEdgeModule1, a następnie przekazywane komunikaty z modułu IotEdgeModule1 do IoT Hub. Narzędzia usługi Azure IoT Edge dla programu Visual Studio umożliwiają wyświetlanie komunikatów w miarę ich dotarcia do IoT Hub z poszczególnych urządzeń.

  1. W programie Visual Studio Cloud Explorer wybierz nazwę wdrożonego urządzenia IoT Edge.

  2. W menu Akcje wybierz pozycję Rozpocznij monitorowanie wbudowanego punktu końcowego zdarzeń.

  3. Obejrzyj sekcję Dane wyjściowe w programie Visual Studio, aby wyświetlić komunikaty przychodzące do centrum IoT.

    Uruchomienie obu modułów może potrwać kilka minut. Środowisko uruchomieniowe IoT Edge musi otrzymać nowy manifest wdrożenia, ściągnąć obrazy modułów ze środowiska uruchomieniowego kontenera, a następnie uruchomić każdy nowy moduł.

    Wyświetlanie przychodzących komunikatów z urządzenia do chmury

Wyświetlanie zmian na urządzeniu

Jeśli chcesz zobaczyć, co się dzieje na urządzeniu, użyj poleceń w tej sekcji, aby sprawdzić środowisko uruchomieniowe IoT Edge i moduły uruchomione na urządzeniu.

Polecenia w tej sekcji dotyczą urządzenia IoT Edge, a nie maszyny deweloperskich. Jeśli używasz maszyny wirtualnej dla urządzenia IoT Edge, połącz się z nim teraz. Na platformie Azure przejdź do strony przeglądu maszyny wirtualnej i wybierz pozycję Połącz , aby uzyskać dostęp do połączenia pulpitu zdalnego. Na urządzeniu otwórz polecenie lub okno programu PowerShell, aby uruchomić iotedge polecenia.

  • Wyświetl wszystkie moduły wdrożone na urządzeniu i sprawdź ich stan:

    iotedge list
    

    Powinny zostać wyświetlone cztery moduły: dwa moduły środowiska uruchomieniowego IoT Edge, SimulatedTemperatureSensor i IotEdgeModule1. Wszystkie cztery powinny być wyświetlane jako uruchomione.

  • Sprawdź dzienniki dla określonego modułu:

    iotedge logs <module name>
    

    moduły IoT Edge są uwzględniane wielkości liter.

    Dzienniki SimulatedTemperatureSensor i IotEdgeModule1 powinny wyświetlać komunikaty, które przetwarzają. Moduł edgeAgent jest odpowiedzialny za uruchomienie innych modułów, więc jego dzienniki będą miały informacje na temat implementowania manifestu wdrożenia. Jeśli którykolwiek moduł nie znajduje się na liście lub nie jest uruchomiony, dzienniki edgeAgent prawdopodobnie będą miały błędy. Moduł edgeHub odpowiada za komunikację między modułami i IoT Hub. Jeśli moduły są uruchomione, ale komunikaty nie docierają do centrum IoT, dzienniki edgeHub prawdopodobnie będą miały błędy.

Czyszczenie zasobów

Jeśli zamierzasz przejść do kolejnego zalecanego artykułu, możesz zachować utworzone zasoby oraz konfiguracje i użyć ich ponownie. Możesz także nadal używać tego samego urządzenia usługi IoT Edge jako urządzenia testowego.

W przeciwnym razie możesz usunąć konfiguracje lokalne i zasoby platformy Azure użyte w tym artykule, aby uniknąć opłat.

Usuwanie zasobów platformy Azure

Usuwanie zasobów i grup zasobów platformy Azure jest nieodwracalne. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub niewłaściwej grupy zasobów. Jeśli centrum IoT zostało utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, usuń tylko sam zasób centrum IoT, a nie grupę zasobów.

Aby usunąć zasoby:

  1. Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.

  2. Wybierz nazwę grupy zasobów, która zawiera zasoby testowe usługi IoT Edge.

  3. Przejrzyj listę zasobów zawartych w grupie zasobów. Jeśli chcesz usunąć je wszystkie, możesz wybrać pozycję Usuń grupę zasobów. Jeśli chcesz usunąć tylko niektóre z nich, możesz kliknąć poszczególne zasoby, aby usunąć je pojedynczo.

Następne kroki

W tym samouczku skonfigurowano program Visual Studio 2019 na komputerze deweloperskim i wdrożono z niego pierwszy moduł IoT Edge. Teraz, gdy znasz podstawowe pojęcia, spróbuj dodać funkcjonalność do modułu, aby umożliwić analizowanie danych przekazywanych przez nie. Wybierz preferowany język:

C#