Testowanie powodzenia aktualizacji Over the Air [zamknięte]

10

Jaka jest najlepsza praktyka zapewniająca pomyślną aktualizację urządzenia IoT?

Co musisz zrobić, aby przetestować aktualizacje OTA i uwierzytelnić urządzenia? Idąc krok dalej, w jaki sposób możesz monitorować / zarządzać wersjami oprogramowania (aktualizacjami) floty urządzeń IoT?

Noam Hacker
źródło
1
To jest zbyt ogólne, jak twoje inne pytanie. I będzie to w dużej mierze zależeć od rodzaju urządzenia i trybu wdrażania.
Gilles „SO- przestań być zły”
1
Kiedy mówisz „flota”, masz na myśli flotę pojazdów? Jeśli tak, zakładam, że komunikacja odbywa się za pomocą (zaszyfrowanego) SMS-a, HTTPS-a przez GPRS lub satelity zdarzeń za pomocą modemu SkyWave. jeśli możesz edytować swoje pytanie w celu wyjaśnienia, jestem pewien, że zostanie ono ponownie otwarte.
Mawg mówi o przywróceniu Moniki

Odpowiedzi:

10

Mam oprogramowanie (Windows Server - trochę inne niż „rzeczy”, ale główny jest taki sam), który wywołuje co 24 godziny - odsyła różne metadane o sobie:

  • nazwa klienta (lub unikalny identyfikator)
  • wersja oprogramowania
  • znacznik czasu połączenia / żądania
  • typ produktu / identyfikator

Usługa internetowa analizuje dane i wstawia (lub aktualizuje, jeśli klient ma istniejący wiersz) wiersz w bazie danych.

W ten sposób nowy klient jest automatycznie dodawany do bazy danych, dotychczasowi klienci aktualizują swój znacznik czasu „ostatnio widziany” i zawsze mamy najnowszą wersję oprogramowania. Mogę uruchamiać zapytania DB, które mówią mi, którzy klienci są w starszych wersjach i / lub którzy nie dzwonili przez jakiś czas.

Niedawno wdrożyliśmy również automatyczną aktualizację (pomyśl aktualizację OTA), a ponieważ jest to proces krytyczny, wdrożyliśmy w tym celu określoną telemetrię - rejestrującą:

  • Obecna wersja.
  • Wersja do aktualizacji.
  • Kto / kiedy autoryzował to (jeśli wymagana jest akceptacja klienta).
  • Znaczniki czasu i kody stanu dla każdego z głównych kroków.

To pozwala nam ustalić, czy niektóre aspekty automatycznej aktualizacji zawodzą, aw wielu przypadkach pozwala nam często dzwonić do klienta, zanim nawet zauważy, że coś jest nie tak.

Dużą różnicą w przypadku „rzeczy” jest to, że zazwyczaj masz ograniczoną pamięć, więc aby wykonać aktualizację xxx Kboprogramowania układowego OTA , potrzebujesz xxx Kb * 2dostępnej pamięci (istniejące oprogramowanie + wystarczająca pamięć do przechowywania nowego oprogramowania przed rozpoczęciem faktycznej aktualizacji oprogramowania)

KennetRunner
źródło
1
dzięki za udostępnienie. Ważnym punktem jest wykorzystanie pamięci. Jak postępujesz w kwestii autoryzacji i akceptacji klienta, jeśli dotyczy? Czy potrzebujesz hasła, aby zaakceptować aktualizację?
Noam Hacker,
2
Jest to inny przypadek użycia (ponieważ jest to system Windows Server), ale mamy interfejs użytkownika, który wyświetla alert po pobraniu aktualizacji OTA - alert pyta klienta, czy chce zaktualizować (i zawiera łącza do informacji o wydaniu itp.). Na thingpewnie prawdopodobnie flashowałbym diodę LED lub coś, aby ostrzec użytkownika (zakładając, że chcesz, aby użytkownik „zezwolił” na aktualizację), a następnie niech przytrzyma przycisk „długo”, aby go uruchomić ...
KennetRunner
5

Możesz na przykład składać żądanie co X tygodni / dni / godzin ... na serwer z bieżącym numerem wersji oprogramowania. Po tym będziesz mógł korzystać z danych analitycznych, aby zobaczyć aktualny odsetek i liczbę zaktualizowanych urządzeń.

WayToDoor
źródło
1
Czy to konto dla urządzeń, które zostały zamurowane lub nie zakończyły aktualizacji (być może utknęły w restarcie, pobieraniu, cyklu awarii?)
Sean Houlihane
1
W pewnym sensie tak. Jeśli masz 100 urządzeń w dniu 1, przerzucasz aktualizację w dniu 2, a w dniu 3 masz tylko 25 urządzeń w analizie, oznacza to, że stało się coś złego
WayToDoor
1
to interesujące. czy istnieje sposób na rozróżnienie rodzajów awarii?
Noam Hacker,
1
podziel aktualizację na dyskretne kroki (np. dodaj nowe wartości konfiguracji , zrestartuj GPS , ustaw identyfikator urządzenia , zastąp oprogramowanie układowe itp.), z których każda ma początkowe ... połączenie wyślij „dom” i zakończone połączeniem o statusie xx wysłanym do domu. W ten sposób możesz (z grubsza) powiedzieć, gdzie się nie udało i (miejmy nadzieję), jaki był kod stanu.
KennetRunner,
4

Chodzi o inteligentną politykę synchronizacji

Potrzebujesz inteligentnej zasady synchronizacji, która działa razem z podejściem do wdrażania aktualizacji. Najbardziej oczywistym momentem, w którym urządzenie IoT powinno zsynchronizować swoją wersję, jest bezpośrednio po aktualizacji . Reszta harmonogramu synchronizacji jest wysoce zależna od typu urządzenia.

Czy zawsze jest włączony i podłączony za pomocą połączenia kablowego, w którym pojedyncza synchronizacja nie kosztuje (dużo), warto okresowo synchronizować, aby utrzymać aktualność danych o urządzeniu.

Jeśli urządzenie gdzieś było, wszystko było kosztowne, ponieważ korzystasz z drogich połączeń satelitarnych, harmonogram synchronizacji musi uwzględniać tę okoliczność.

Weryfikacja synchronizacji

W wystarczająco zaawansowanym urządzeniu (przeczytaj przedział cenowy lub obszar działania, który to uzasadnia) każde urządzenie może być wyposażone w certyfikat klienta, który umożliwia sprawdzenie autentyczności synchronizacji.

W każdym razie w przypadku urządzeń końcowych zawsze będziesz mieć urządzenia spadające z radaru z powodu wyczerpujących się baterii, urządzenia, które nie działają lub po prostu klient zmienia hasło sieci bezprzewodowej i nie informuje urządzenia IoT. Mogą one nie musieć nic robić z twoją aktualizacją, nawet jeśli są zbieżne czasowo.

Helmar
źródło
Nie sądzę, żeby to rozwiązało kwestię PO.
WayToDoor,
@ WayToDoor mój pierwszy akapit zaleca synchronizację bezpośrednio po aktualizacji. Daje to informację, czy nowa wersja została pomyślnie osiągnięta. Możliwe środki zaradcze, jeśli tak nie było, są zbyt szerokie (i nie poproszono o nie). Pozostała część mojej odpowiedzi dotyczy monitorowania wersji w terenie. Które pytanie mi umknęło?
Helmar