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 zaufania do stanu końcowego urządzenia. Zazwyczaj ł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 wdrożyć model trybu failover A/B.
W tym samouczku przedstawiono kroki umożliwiające ukończenie 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ę.
- Utwórz grupę urządzeń.
- 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 i skonfiguruj centrum IoT Hub.
Pobieranie obrazu
Udostępniamy przykładowe obrazy w zasobach na stronie Wydania usługi GitHub aktualizacji urządzenia. Plik gz jest obrazem podstawowym, na którym można migać na płytę Raspberry Pi 3 B+. Plik swUpdate to aktualizacja, którą należy zaimportować za pomocą usługi Device Update dla IoT Hub.
Migaj kartę SD z obrazem
Użyj ulubionego narzędzia flashowania systemu operacyjnego, aby zainstalować obraz podstawowy usługi Device Update (adu-base-image) na karcie SD, która będzie używana na urządzeniu Raspberry Pi 3 B+.
Używanie narzędzia bmaptool do flash karty SD
bmaptool
Zainstaluj narzędzie, jeśli jeszcze tego nie zrobiono.sudo apt-get install bmap-tools
Znajdź ścieżkę dla karty SD w pliku
/dev
. Ścieżka powinna wyglądać następująco:/dev/sd*
lub/dev/mmcblk*
. Możesz użyćdmesg
narzędzia, aby pomóc zlokalizować poprawną ścieżkę.Odinstaluj wszystkie zainstalowane partycje przed flashowaniem.
sudo umount /dev/<device>
Upewnij się, że masz uprawnienia do zapisu na urządzeniu.
sudo chmod a+rw /dev/<device>
Opcjonalnie: aby przyspieszyć miganie, pobierz plik mapy bimap i plik obrazu i umieść je w tym samym katalogu.
Flash kartę SD.
sudo bmaptool copy <path to image> /dev/<device>
Usługa Device Update dla oprogramowania Azure IoT Hub podlega następującym postanowieniom licencyjnym:
Przeczytaj postanowienia licencyjne przed użyciem agenta. Twoja instalacja i użycie stanowią akceptację tych warunków. Jeśli nie zgadzasz się z postanowieniami licencyjnymi, nie używaj aktualizacji urządzenia dla agenta IoT Hub.
Tworzenie urządzenia lub modułu w IoT Hub i pobieranie parametrów połączenia
Teraz dodaj urządzenie do IoT Hub. Z poziomu IoT Hub dla urządzenia są generowane parametry połączenia.
W Azure Portal uruchom IoT Hub.
Utwórz nowe urządzenie.
W okienku po lewej stronie wybierz pozycję Urządzenia. Następnie wybierz pozycję Nowy.
W obszarze Identyfikator urządzenia wprowadź nazwę urządzenia. Upewnij się, że zaznaczono pole wyboru Automatyczne generowanie kluczy .
Wybierz pozycję Zapisz. Na stronie Urządzenia utworzone urządzenie powinno znajdować się na liście.
Pobierz parametry połączenia urządzenia przy użyciu jednej z dwóch opcji:
- Opcja 1. Użyj agenta usługi Device Update z tożsamością modułu: na tej samej stronie Urządzenia wybierz pozycję Dodaj tożsamość modułu u góry. Utwórz nowy moduł Device Update o nazwie IoTHubDeviceUpdate. Wybierz inne opcje, które mają zastosowanie do przypadku użycia, a następnie wybierz pozycję Zapisz. Wybierz nowo utworzony moduł. W widoku modułu wybierz ikonę Kopiuj obok pozycji Podstawowe parametry połączenia.
- Opcja 2. Użyj agenta usługi Device Update z tożsamością urządzenia: w widoku urządzenia wybierz ikonę Kopiuj obok pozycji Podstawowe parametry połączenia.
Wklej skopiowane znaki do późniejszego użycia w następujących krokach:
Te skopiowane parametry to parametry połączenia urządzenia.
Przygotowywanie konfiguracji urządzeń na potrzeby aktualizacji urządzeń dla IoT Hub
Na urządzeniu muszą znajdować się dwa pliki konfiguracji, aby usługa Device Update dla IoT Hub poprawnie skonfigurowała. Pierwszym plikiem du-config.json
jest plik, który musi istnieć w lokalizacji /adu/du-config.json
. Drugi plik to du-diagnostics-config.json
plik, który musi istnieć w lokalizacji /adu/du-diagnostics-config.json
.
Poniżej przedstawiono dwa przykłady plików du-config.json
i du-diagnostics-config.json
:
Przykład du-config.json
{
"schemaVersion": "1.0",
"aduShellTrustedUsers": [
"adu",
"do"
],
"manufacturer": "fabrikam",
"model": "vacuum",
"agents": [
{
"name": "main",
"runas": "adu",
"connectionSource": {
"connectionType": "string",
"connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU="
},
"manufacturer": "fabrikam",
"model": "vacuum"
}
]
}
Przykład du-diagnostics-config.json
{
"logComponents":[
{
"componentName":"adu",
"logPath":"/adu/logs/"
},
{
"componentName":"do",
"logPath":"/var/log/deliveryoptimization-agent/"
}
],
"maxKilobytesToUploadPerLogPath":50
}
Konfigurowanie agenta aktualizacji urządzeń na urządzeniu Raspberry Pi
Upewnij się, że urządzenie Raspberry Pi 3 jest połączone z siecią.
Postępuj zgodnie z poniższymi instrukcjami, aby dodać szczegóły konfiguracji:
Najpierw SSH na maszynie przy użyciu następującego polecenia w oknie programu PowerShell:
ssh raspberrypi3 -l root
Utwórz lub otwórz
du-config.json
plik do edycji przy użyciu:nano /adu/du-config.json
Po uruchomieniu polecenia powinien zostać wyświetlony otwarty edytor z plikiem. Jeśli plik nigdy nie został utworzony, będzie on pusty. Teraz skopiuj poprzedni przykładową zawartość du-config.json i zastąp konfiguracje wymagane dla urządzenia. Następnie zastąp przykładowe parametry połączenia wartością jedną dla urządzenia utworzonego w poprzednich krokach.
Po zakończeniu wprowadzania zmian wybierz klawisze Ctrl+X , aby zakończyć działanie edytora. Następnie wprowadź wartość y , aby zapisać zmiany.
Teraz musisz utworzyć
du-diagnostics-config.json
plik przy użyciu podobnych poleceń. Zacznij od utworzeniadu-diagnostics-config.json
lub otwarcia pliku do edycji przy użyciu:nano /adu/du-diagnostics-config.json
Skopiuj poprzedni przykład du-diagnostics-config.json zawartości i zastąp wszystkie konfiguracje, które różnią się od kompilacji domyślnej. Przykładowy plik du-diagnostics-config.json reprezentuje domyślne lokalizacje dziennika aktualizacji urządzenia dla IoT Hub. Należy je zmienić tylko wtedy, gdy implementacja się różni.
Po zakończeniu wprowadzania zmian wybierz klawisze Ctrl+X , aby zakończyć działanie edytora. Następnie wprowadź wartość y , aby zapisać zmiany.
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/
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 adu-agent
Sprawdź, czy agent jest na żywo, używając następującego polecenia:
systemctl status adu-agent
Stan powinien zostać wyświetlony jako żywy i zielony.
Łączenie urządzenia w usłudze Device Update dla IoT Hub
W okienku po lewej stronie wybierz pozycję Urządzenia.
Wybierz link z nazwą urządzenia.
W górnej części strony wybierz pozycję Bliźniacze reprezentacja urządzenia , jeśli łączysz się bezpośrednio z usługą Device Update przy użyciu tożsamości urządzenia IoT. W przeciwnym razie wybierz utworzony moduł i wybierz jego bliźniacze reprezentację modułu.
W sekcji zgłoszonej właściwości bliźniaczej reprezentacji urządzenia poszukaj wersji 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.
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 do urządzenia
Zaloguj się do Azure Portal i przejdź do centrum IoT.
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.
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.
Dodaj nową wartość tagu Device Update, jak pokazano poniżej:
"tags": { "ADUGroup": "<CustomTagValue>" }
Importowanie aktualizacji
Pobierz przykładowy manifest samouczka (Samouczek Importowanie Manifest_Pi.json) i przykładową aktualizację (adu-update-image-raspberrypi3-0.6.5073.1.swu) z obszaru Zasoby wydania dla najnowszego agenta.
Zaloguj się do Azure Portal i przejdź do centrum IoT Hub za pomocą usługi Device Update. W okienku po lewej stronie w obszarze Automatyczne Zarządzanie urządzeniami wybierz pozycję Aktualizacje.
Wybierz kartę Aktualizacje.
Wybierz pozycję + Importuj nową aktualizację.
Wybierz pozycję + Wybierz z kontenera magazynu. Wybierz istniejące konto lub utwórz nowe konto przy użyciu pozycji + Konto magazynu. 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 zaimportowania.
Uwaga
Zalecamy używanie nowego kontenera za każdym razem, gdy importujesz 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.
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ę .
Ten zrzut ekranu przedstawia krok importowania. Nazwy plików mogą nie być zgodne z nazwami używanymi w przykładzie.
Na stronie Importowanie aktualizacji przejrzyj pliki do zaimportowania. Następnie wybierz pozycję Importuj aktualizację , aby rozpocząć proces importowania.
Rozpoczyna się proces importowania, a ekran przechodzi 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.
Dowiedz się więcej na temat importowania aktualizacji.
Tworzenie grupy aktualizacji
Przejdź do karty Grupy i wdrożenia w górnej części strony.
Wybierz pozycję Dodaj grupę , aby utworzyć nową grupę.
Wybierz z listy tag IoT Hub i klasę urządzenia. Następnie wybierz pozycję Utwórz grupę.
Po utworzeniu grupy zostanie zaktualizowany wykres zgodności aktualizacji i lista grup. 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.
Nowo utworzona grupa powinna być widoczna i wszystkie dostępne aktualizacje dla urządzeń w nowej grupie. Jeśli istnieją urządzenia, które nie spełniają wymagań klasy urządzeń grupy, są one wyświetlane w odpowiedniej nieprawidłowej grupie. Aby wdrożyć najlepszą dostępną aktualizację dla nowej grupy zdefiniowanej przez użytkownika z tego widoku, wybierz pozycję Wdróż obok grupy.
Dowiedz się więcej o dodawaniu tagów i tworzeniu grup aktualizacji.
Wdrażanie aktualizacji
Po utworzeniu grupy powinna zostać wyświetlona nowa aktualizacja dostępna dla grupy urządzeń. Link do aktualizacji powinien znajdować się w obszarze Najlepsza aktualizacja. Może być konieczne odświeżenie raz. Dowiedz się więcej o zgodności aktualizacji.
Wybierz grupę docelową, wybierając nazwę grupy. Zostaną przekierowane do szczegółów grupy w obszarze Podstawowe informacje o grupie.
Aby rozpocząć wdrażanie, przejdź do karty Bieżące wdrożenie . Wybierz link wdrażania obok żądanej aktualizacji z sekcji Dostępne aktualizacje . Najlepsza dostępna aktualizacja dla danej grupy jest oznaczona wyróżnieniem Najlepsze .
Zaplanuj rozpoczęcie wdrożenia natychmiast lub w przyszłości. Następnie wybierz pozycję Utwórz.
W obszarze Szczegóły wdrożeniastan zmieni się na Aktywny. Wdrożona aktualizacja jest oznaczona elementem (wdrażanie).
Wyświetl wykres zgodności, aby zobaczyć, że aktualizacja jest teraz w toku.
Po pomyślnym zaktualizowaniu urządzenia zobaczysz, że wykres zgodności i szczegóły wdrożenia zostały zaktualizowane, aby odzwierciedlić to samo.
Monitorowanie wdrożenia aktualizacji
Wybierz kartę Historia wdrożenia w górnej części strony.
Wybierz pozycję Szczegóły obok utworzonego wdrożenia.
Wybierz pozycję Odśwież , aby wyświetlić najnowsze szczegóły stanu.
Ukończono pomyślną aktualizację kompleksowego obrazu przy użyciu usługi Device Update dla IoT Hub na urządzeniu Raspberry Pi 3 B+.
Czyszczenie zasobów
Gdy konto usługi Device Update, wystąpienie, centrum IoT i urządzenie IoT nie będą już potrzebne, wyczyść je.