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.
W Azure Portal przejdź do centrum IoT Hub.
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 pole wyboru Automatyczne generowanie kluczy jest zaznaczone.
Wybierz pozycję Zapisz. Na stronie Urządzenia utworzone urządzenie powinno znajdować się na liście.
Pobierz parametry połączenia urządzenia, przechodząc do 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 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
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ć mniej więcej tak:/dev/sd*
lub/dev/mmcblk*
. Możesz użyćdmesg
narzędzia , aby pomóc zlokalizować poprawną ścieżkę.Odinstalowywanie wszystkich zainstalowanych partycji 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ść go w tym samym katalogu.
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
Upewnij się, że urządzenie Raspberry Pi 3 jest połączone z siecią.
Połączenie SSH z urządzeniem Raspberry Pi 3 przy użyciu następującego polecenia w oknie programu PowerShell:
ssh raspberrypi3 -l root
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.
- Aby utworzyć lub otworzyć
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 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=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" }, "manufacturer": "contoso", "model": "virtual-vacuum-v2" } ] }
- Po zakończeniu wprowadzania zmian wybierz pozycję
Ctrl+X
, aby zakończyć działanie edytora. Następnie wprowadź polecenie ,y
aby zapisać zmiany.
- Aby utworzyć lub otworzyć
Teraz musisz utworzyć
du-diagnostics-config.json
plik przy użyciu podobnych poleceń.- Zacznij od utworzenia
du-diagnostics-config.json
lub otwarcia pliku do edycji przy użyciu:
nano /adu/du-diagnostics-config.json
- 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 }
- Po zakończeniu wprowadzania zmian wybierz pozycję
Ctrl+X
, aby zakończyć działanie edytora. Następnie wprowadź polecenie ,y
aby zapisać zmiany.
- Zacznij od utworzenia
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 deviceupdate-agent
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
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 reprezentacje urządzenia.
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.
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
W witrynie Azure Portal przejdź do centrum IoT Hub.
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:
"tags": { "ADUGroup": "<CustomTagValue>" }
Ten zrzut ekranu przedstawia sekcję, w której należy dodać tag w bliźniaczej reprezentacji.
Importowanie aktualizacji
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.
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.
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 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.
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. Na potrzeby samouczka zaimportuj przykładowy manifest samouczka i przykładową aktualizację (plik swu) oraz pobrany wcześniej przykładowy skrypt A/B.
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.
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ń.
Przejdź do karty Grupy i wdrożenia w górnej części strony.
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.
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
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ń.
Wybierz grupę docelową, wybierając nazwę grupy. Zostaną przekierowane do szczegółów grupy w obszarze Podstawowe informacje o grupie.
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 .
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.
W obszarze Szczegóły wdrożeniastan powoduje zmianę pozycji Aktywny. Wdrożona aktualizacja jest oznaczona ( 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 zostaną zaktualizowane, aby odzwierciedlić to samo.
Monitorowanie wdrożenia aktualizacji
Wybierz kartę Historia wdrażania w górnej części strony.
Wybierz link szczegółów obok utworzonego wdrożenia.
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.