Samouczek: aktualizacja urządzenia dla Azure IoT Hub przy użyciu obrazu referencyjnego urządzenia Raspberry Pi 3 B+

Usługa Device Update dla Azure IoT Hub obsługuje aktualizacje oparte na obrazach, oparte na pakietach i oparte na skryptach.

Aktualizacje obrazów zapewniają wyższy poziom pewności co do stanu końcowego urządzenia. Zwykle łatwiej jest replikować wyniki aktualizacji obrazu między środowiskiem przedprodukcyjnym a środowiskiem produkcyjnym, ponieważ nie stanowi to takich samych wyzwań jak pakiety i ich zależności. Ze względu na ich niepodzielne charakter można również łatwo przyjąć model trybu failover A/B.

Ten samouczek przeprowadzi Cię przez kroki ukończenia kompleksowej aktualizacji opartej na obrazie przy użyciu usługi Device Update for IoT Hub na tablicy Raspberry Pi 3 B+.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Pobierz obraz.
  • Dodaj tag do urządzenia IoT.
  • Zaimportuj aktualizację.
  • Wdrażanie aktualizacji obrazu.
  • Monitorowanie wdrożenia aktualizacji.

Uwaga

Aktualizacje obrazów w tym samouczku zostały zweryfikowane na tablicy Raspberry Pi B3.

Wymagania wstępne

Jeśli jeszcze tego nie zrobiono, utwórz konto i wystąpienie usługi Device Update oraz skonfiguruj centrum IoT Hub. Ten samouczek wymaga, aby urządzenie było połączone za pośrednictwem połączenia Ethernet.

Pobieranie plików w obszarze Assets na stronie wersji usługi GitHub z aktualizacją urządzenia. Tutorial_RaspberryPi.zip zawiera wszystkie wymagane pliki na potrzeby tego samouczka.

Tworzenie urządzenia w IoT Hub i pobieranie parametrów połączenia

Teraz dodaj urządzenie do IoT Hub. W IoT Hub dla urządzenia są generowane parametry połączenia.

  1. W Azure Portal przejdź do centrum IoT Hub.

  2. W okienku po lewej stronie wybierz pozycję Urządzenia. Następnie wybierz pozycję Nowy.

  3. W obszarze Identyfikator urządzenia wprowadź nazwę urządzenia. Upewnij się, że pole wyboru Automatyczne generowanie kluczy jest zaznaczone.

  4. Wybierz pozycję Zapisz. Na stronie Urządzenia utworzone urządzenie powinno znajdować się na liście.

  5. Pobierz parametry połączenia urządzenia, przechodząc do widoku urządzenia, wybierz ikonę Kopiuj obok pozycji Podstawowe parametry połączenia.

  6. Wklej skopiowane znaki do późniejszego użycia w następujących krokach:

    Te skopiowane parametry są parametrami połączenia urządzenia.

Uwaga

W tym samouczku parametry połączenia urządzenia są używane do uwierzytelniania i nawiązywania połączenia z IoT Hub w celu ułatwienia konfiguracji. W przypadku scenariuszy produkcyjnych zalecamy używanie tożsamości modułu i korzystanie z usługi AIS (IoT Identity Service) do aprowizowania urządzeń. Dowiedz się więcej

Konfigurowanie urządzenia Raspberry Pi

Udostępniamy podstawowy obraz i pliki aktualizacji w zasobach na stronie Wersji usługi GitHub aktualizacji urządzeń. Tutorial_RaspberryPi.zip zawiera wszystkie wymagane pliki na potrzeby tego samouczka. Plik wic jest obrazem podstawowym, który można migać na płytę Raspberry Pi 3 B+. Plik swUpdate(.swu), niestandardowy skrypt swupdate i manifest to pliki aktualizacji importowane za pośrednictwem usługi Device Update dla IoT Hub.

Ten obraz podstawowy używa kompilacji Yocto (opartej na wersji 3.4.4) z:

  • SWUpdate, która umożliwia aktualizację podwójnej partycji za pomocą du
  • Agent usługi Device Update

Aby dowiedzieć się więcej na temat używanych warstw Yocto, zapoznaj się z artykułem Device Update Yocto GitHub..

Możesz użyć ulubionego narzędzia flashowania systemu operacyjnego do zainstalowania obrazu podstawowego usługi Device Update (adu-base-image) na karcie SD, która będzie używana na urządzeniu Raspberry Pi 3 B+. Poniżej przedstawiono instrukcje dotyczące używania narzędzia bmaptool do flashowania na karcie SD.

Używanie narzędzia bmaptool do flashowania karty SD

  1. bmaptool Zainstaluj narzędzie, jeśli jeszcze tego nie zrobiono.

    sudo apt-get install bmap-tools
    
  2. Znajdź ścieżkę dla karty SD w pliku /dev. Ścieżka powinna wyglądać mniej więcej tak: /dev/sd* lub /dev/mmcblk*. Możesz użyć dmesg narzędzia , aby pomóc zlokalizować poprawną ścieżkę.

  3. Odinstalowywanie wszystkich zainstalowanych partycji przed flashowaniem.

    sudo umount /dev/<device>
    
  4. Upewnij się, że masz uprawnienia do zapisu na urządzeniu.

    sudo chmod a+rw /dev/<device>
    
  5. Opcjonalnie: Aby przyspieszyć miganie, pobierz plik mapy bimap i plik obrazu i umieść go w tym samym katalogu.

  6. Flash kartę SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

Usługa Device Update dla Azure IoT Hub oprogramowania podlega następującym postanowieniom licencyjnym:

Przeczytaj postanowienia licencyjne przed rozpoczęciem korzystania z agenta. Instalacja i użycie stanowi akceptację niniejszych warunków. Jeśli nie zgadzasz się z postanowieniami licencyjnymi, nie używaj usługi Device Update dla agenta IoT Hub.

Konfigurowanie agenta usługi Device Update na urządzeniu Raspberry Pi

  1. Upewnij się, że urządzenie Raspberry Pi 3 jest połączone z siecią.

  2. Połączenie SSH z urządzeniem Raspberry Pi 3 przy użyciu następującego polecenia w oknie programu PowerShell:

      ssh raspberrypi3 -l root
    
  3. Pliki konfiguracji DU (du-config.json i du-diagnostics-config.json) muszą znajdować się na urządzeniu, aby usługa Device Update dla IoT Hub skonfigurowała prawidłowo.

    1. Aby utworzyć lub otworzyć du-config.json plik do edycji przy użyciu:
      nano /adu/du-config.json
    
    1. Po uruchomieniu polecenia powinien zostać wyświetlony otwarty edytor z plikiem . Jeśli plik nigdy nie został utworzony, będzie on pusty. Teraz skopiuj poniższą zawartość du-config.json i zastąp konfiguracje wymagane dla urządzenia. Następnie zastąp przykładowe parametry połączenia parametrami dla urządzenia utworzonego w poprzednich krokach.

      du-config.json

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU=" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
    1. Po zakończeniu wprowadzania zmian wybierz pozycję Ctrl+X , aby zakończyć działanie edytora. Następnie wprowadź polecenie , y aby zapisać zmiany.
  4. Teraz musisz utworzyć du-diagnostics-config.json plik przy użyciu podobnych poleceń.

    1. Zacznij od utworzenia du-diagnostics-config.json lub otwarcia pliku do edycji przy użyciu:
      nano /adu/du-diagnostics-config.json
    
    1. Skopiuj zawartość du-diagnostics-config.json podaną poniżej i zastąp wszelkie konfiguracje, które różnią się od domyślnej kompilacji. Przykładowy plik du-diagnostics-config.json reprezentuje domyślne lokalizacje dziennika dla usługi Device Update dla IoT Hub. Te wartości domyślne trzeba zmienić tylko wtedy, gdy implementacja się różni.

    du-diagnostics-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. Po zakończeniu wprowadzania zmian wybierz pozycję Ctrl+X , aby zakończyć działanie edytora. Następnie wprowadź polecenie , y aby zapisać zmiany.
  5. Użyj następującego polecenia, aby wyświetlić pliki znajdujące się w /adu/ katalogu. Powinny zostać wyświetlone oba pliki konfiguracji.du-diagnostics-config.json do edycji przy użyciu:

      ls -la /adu/
    
  6. Uruchom ponownie demona systemu aktualizacji urządzeń, aby upewnić się, że konfiguracje zostały zastosowane. Użyj następującego polecenia w terminalu zalogowanym do polecenia raspberrypi:

      systemctl start deviceupdate-agent
    
  7. Sprawdź, czy agent działa, używając następującego polecenia:

      systemctl status deviceupdate-agent
    

    Stan powinien być wyświetlany jako aktywny i zielony.

Łączenie urządzenia w usłudze Device Update dla IoT Hub

  1. W okienku po lewej stronie wybierz pozycję Urządzenia.

  2. Wybierz link z nazwą urządzenia.

  3. W górnej części strony wybierz pozycję Bliźniacze reprezentacje urządzenia.

  4. W sekcji zgłoszonej właściwości bliźniaczej reprezentacji urządzenia wyszukaj wersję jądra systemu Linux.

    W przypadku nowego urządzenia, które nie otrzymało aktualizacji z usługi Device Update, wartość DeviceManagement:DeviceInformation:1.swVersion reprezentuje wersję oprogramowania układowego uruchomioną na urządzeniu. Po zastosowaniu aktualizacji do urządzenia usługa Device Update używa wartości właściwości AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId , aby reprezentować wersję oprogramowania układowego uruchomioną na urządzeniu.

  5. Pliki obrazów podstawowych i aktualizacji mają numer wersji w nazwie pliku.

     adu-<image type>-image-<machine>-<version number>.<extension>
    

    Użyj tego numeru wersji w późniejszej sekcji "Zaimportuj aktualizację".

Dodawanie tagu grupy aktualizacji urządzeń do urządzenia

  1. W witrynie Azure Portal przejdź do centrum IoT Hub.

  2. W okienku po lewej stronie w obszarze Urządzenia znajdź urządzenie IoT i przejdź do bliźniaczej reprezentacji urządzenia lub bliźniaczej reprezentacji modułu.

  3. W bliźniaczej reprezentacji modułu agenta usługi Device Update usuń wszystkie istniejące wartości tagów usługi Device Update, ustawiając je na wartość null. Jeśli używasz tożsamości urządzenia z agentem usługi Device Update, wprowadź te zmiany w bliźniaczej reprezentacji urządzenia.

  4. Dodaj nową wartość tagu Device Update, jak pokazano:

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

    Zrzut ekranu przedstawiający reprezentację bliźniaczą z informacjami o tagach.

    Ten zrzut ekranu przedstawia sekcję, w której należy dodać tag w bliźniaczej reprezentacji.

Importowanie aktualizacji

  1. Pobierz przykładowy manifest samouczka i przykładową aktualizację (plik swu) oraz przykładowy skrypt A/B z Tutorial_RaspberryPi.zip w obszarze Zasoby wydania dla najnowszego agenta.

  2. Zaloguj się do Azure Portal i przejdź do centrum IoT Hub przy użyciu usługi Device Update. W okienku po lewej stronie w obszarze Automatyczne Zarządzanie urządzeniami wybierz pozycję Aktualizacje.

  3. Wybierz kartę Aktualizacje.

  4. Wybierz pozycję + Importuj nową aktualizację.

  5. Wybierz pozycję + Wybierz z kontenera magazynu. Wybierz istniejące konto lub utwórz nowe konto przy użyciu konta + Storage. Następnie wybierz istniejący kontener lub utwórz nowy kontener przy użyciu polecenia + Kontener. Ten kontener będzie używany do przygotowania plików aktualizacji do importowania.

    Uwaga

    Zalecamy użycie nowego kontenera za każdym razem, gdy zaimportujesz aktualizację, aby uniknąć przypadkowego importowania plików z poprzednich aktualizacji. Jeśli nie używasz nowego kontenera, przed zakończeniem tego kroku usuń wszystkie pliki z istniejącego kontenera.

    Zrzut ekranu przedstawiający konta usługi Storage i kontenery.

  6. W kontenerze wybierz pozycję Przekaż i przejdź do plików pobranych w kroku 1. Po wybraniu wszystkich plików aktualizacji wybierz pozycję Przekaż. Następnie wybierz przycisk Wybierz , aby powrócić do strony Importuj aktualizację .

    Zrzut ekranu przedstawiający wybieranie przekazanych plików.

    Ten zrzut ekranu przedstawia krok importowania. Nazwy plików mogą nie być zgodne z nazwami używanymi w przykładzie.

  7. Na stronie Importowanie aktualizacji przejrzyj pliki do zaimportowania. Następnie wybierz pozycję Importuj aktualizację , aby rozpocząć proces importowania. Na potrzeby samouczka zaimportuj przykładowy manifest samouczka i przykładową aktualizację (plik swu) oraz pobrany wcześniej przykładowy skrypt A/B.

    Zrzut ekranu przedstawiający aktualizację importu.

  8. Rozpoczyna się proces importowania, a ekran przełącza się do sekcji Historia importu . Gdy kolumna Stan wskazuje, że importowanie zakończyło się pomyślnie, wybierz nagłówek Dostępne aktualizacje . Zaimportowana aktualizacja powinna być teraz widoczna na liście.

    Zrzut ekranu przedstawiający stan zadania.

Aby uzyskać więcej informacji na temat procesu importowania, zobacz Importowanie aktualizacji do usługi Device Update.

Wyświetlanie grup urządzeń

Usługa Device Update używa grup do organizowania urządzeń. Usługa Device Update automatycznie sortuje urządzenia do grup na podstawie przypisanych tagów i właściwości zgodności. Każde urządzenie należy tylko do jednej grupy, ale grupy mogą mieć wiele podgrup do sortowania różnych klas urządzeń.

  1. Przejdź do karty Grupy i wdrożenia w górnej części strony.

    Zrzut ekranu przedstawiający niezgrupowane urządzenia.

  2. Wyświetl listę grup i wykres zgodności aktualizacji. Wykres zgodności aktualizacji przedstawia liczbę urządzeń w różnych stanach zgodności: w przypadku najnowszej aktualizacji, dostępne nowe aktualizacje i Aktualizacje w toku. Dowiedz się więcej o zgodności aktualizacji.

    Zrzut ekranu przedstawiający widok zgodności aktualizacji.

  3. Powinna zostać wyświetlona grupa urządzeń zawierająca symulowane urządzenie skonfigurowane w tym samouczku wraz z wszelkimi dostępnymi aktualizacjami dla urządzeń w nowej grupie. Jeśli istnieją urządzenia, które nie spełniają wymagań klasy urządzeń grupy, zostaną one wyświetlone w odpowiedniej nieprawidłowej grupie. Aby wdrożyć najlepszą dostępną aktualizację do nowej grupy zdefiniowanej przez użytkownika z tego widoku, wybierz pozycję Wdróż obok grupy.

Aby uzyskać więcej informacji na temat tagów i grup, zobacz Zarządzanie grupami urządzeń.

Wdrażanie aktualizacji

  1. Po utworzeniu grupy powinna zostać wyświetlona nowa aktualizacja dostępna dla grupy urządzeń z linkiem do aktualizacji w obszarze Najlepsza aktualizacja. Może być konieczne odświeżenie raz.

    Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność aktualizacji urządzeń.

  2. Wybierz grupę docelową, wybierając nazwę grupy. Zostaną przekierowane do szczegółów grupy w obszarze Podstawowe informacje o grupie.

    Zrzut ekranu przedstawiający szczegóły grupy.

  3. Aby zainicjować wdrożenie, przejdź do karty Bieżące wdrożenie . Wybierz link wdróż obok żądanej aktualizacji w sekcji Dostępne aktualizacje . Najlepsza dostępna aktualizacja dla danej grupy jest oznaczona wyróżnieniem Najlepszym .

    Zrzut ekranu przedstawiający wybieranie aktualizacji.

  4. Zaplanuj wdrożenie, aby rozpocząć od razu lub w przyszłości. Następnie wybierz pozycję Utwórz.

    Porada

    Domyślnie data i godzina rozpoczęcia to 24 godziny od bieżącej godziny. Pamiętaj, aby wybrać inną datę i godzinę, jeśli wdrożenie ma rozpocząć się wcześniej.

    Zrzut ekranu przedstawiający tworzenie wdrożenia.

  5. W obszarze Szczegóły wdrożeniastan powoduje zmianę pozycji Aktywny. Wdrożona aktualizacja jest oznaczona ( wdrażanie).

    Zrzut ekranu przedstawiający wdrożenie jako Aktywne.

  6. Wyświetl wykres zgodności, aby zobaczyć, że aktualizacja jest teraz w toku.

  7. Po pomyślnym zaktualizowaniu urządzenia zobaczysz, że wykres zgodności i szczegóły wdrożenia zostaną zaktualizowane, aby odzwierciedlić to samo.

    Zrzut ekranu przedstawiający powodzenie aktualizacji.

Monitorowanie wdrożenia aktualizacji

  1. Wybierz kartę Historia wdrażania w górnej części strony.

    Zrzut ekranu przedstawiający historię wdrożenia.

  2. Wybierz link szczegółów obok utworzonego wdrożenia.

    Zrzut ekranu przedstawiający szczegóły wdrożenia.

  3. Wybierz pozycję Odśwież, aby wyświetlić najnowsze szczegóły stanu.

Ukończono pomyślnie kompleksową aktualizację obrazu przy użyciu usługi Device Update for IoT Hub na urządzeniu Raspberry Pi 3 B+.

Czyszczenie zasobów

Gdy konto aktualizacji urządzenia, wystąpienie, centrum IoT i urządzenie IoT nie będą już potrzebne, wyczyść je.

Następne kroki