Testowanie sieci wątków za pomocą wizualizacji

1. Wprowadzenie

5abd22afa2f2ee9a.png

Co to jest Thread, OpenThread, OTNS i Jedwab?

Thread to oparty na adresach IP protokół sieci bezprzewodowej typu mesh o niskim poborze energii, który umożliwia bezpieczną komunikację między urządzeniami i chmurą. Sieci Thread mogą dostosowywać się do zmian topologii, aby uniknąć awarii pojedynczego punktu.

Opublikowana przez Google implementacja OpenThread to implementacja Thread typu open source. Pomimo niewielkiego rozmiaru kodu i ilości pamięci OpenThread obsługuje wszystkie funkcje zdefiniowane w specyfikacji wątków.

Symulator sieci OpenThread (OTNS) umożliwia symulowanie sieci Thread przez uruchamianie symulowanych węzłów OpenThread na platformach POSix. OTNS zapewnia łatwy w użyciu interfejs internetowy (OTNS-Web) do wizualizacji i obsługi symulowanych sieci Thread.

Silk to w pełni zautomatyzowana platforma testowa, która służy do sprawdzania funkcji, funkcji i wydajności systemu OpenThread na rzeczywistych urządzeniach.

Czego się nauczysz

  • Platforma weryfikacji funkcji OpenThread: Silk
  • Utwórz OpenThread na prawdziwe urządzenia z włączoną funkcją OTNS.
  • Monitorowanie stanu sieci Thread utworzonej przez uruchomienie testów jednych za pomocą interfejsu OTNS-Web

To ćwiczenia w programowaniu koncentrują się na używaniu jedwabiu w OTNS. Nie omówiliśmy innych funkcji jedwabiu i OTNS.

Czego potrzebujesz

Sprzęt:

  • 6 płytek deweloperskich Nordic Semiconductor nRF52840
  • 6 kabli USB na micro USB do połączenia tablic
  • hub USB

Oprogramowanie:

Wymagania wstępne:

2. Wymagania wstępne

Ukończ wcześniejsze podstawowe ćwiczenia z programowania

Sprawdzam wymagania wstępne pakietu

Upewnijmy się, że zostały spełnione wszystkie wymagania wstępne.

  1. Uruchom which otns, aby sprawdzić, czy plik wykonywalny otns można wyszukać w programie $PATH.
  2. Uruchom which wpantund, by sprawdzić, czy wersja wpantund jest dostępna.
  3. Sprawdź, czy wszystkie pakiety narzędzi ARM GNU, J-Link i nrfjprog są dostępne.

Uwaga: wskazówki dotyczące konfiguracji znajdziesz w dokumentacji, do której prowadzi link. Warunek wstępny nr 1 pochodzi z dokumentu Simulation Thread Networks with OTNS (Symulacja sieci Threads przy użyciu OTNS), a inne – z artykułu Budowanie sieci Thread przy użyciu tablic nRF52840 i OpenThread.

3. Konfiguracja jedwabiu

Aby sklonować Silk i skonfigurować środowisko, uruchom te polecenia w katalogu źródłowym:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Zdefiniuj plik konfiguracji sprzętu

Aby umożliwić Silk zebranie dostępnych testowych zasobów sprzętowych połączonych z Twoją maszyną, zdefiniuj plik hwconfig.ini w tym formacie:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

W pakiecie Jedwab instalowany jest narzędzie usbinfo, którego można używać do sprawdzania numeru seryjnego interfejsu i numeru interfejsu USB. DutSerial to numer seryjny wydrukowany na elemencie lub wyświetlany przez usbinfo w przypadku produktów J-Link.

Pola LayoutCenter i LayoutRadius w sekcji [DEFAULT] określają kształt układu, gdy urządzenia są wizualizowane w interfejsie internetowym. Ustawienie w nich przedstawionych tu wartości może być dobrym punktem wyjścia.

Następnie definiuje sekcję dla każdego urządzenia testowego i podaje odpowiednie informacje o sprzęcie.

4. Kompiluj OpenThread z włączonym OTNS

Obraz budynku i miganie

Domyślnie urządzenia OpenThread nie wysyłają komunikatów OTNS. Aby umożliwić tablicom deweloperskim wysyłanie komunikatów o stanie do interfejsów logów niezbędnych do wizualizacji OTNS, uruchom poniższe polecenie w katalogu źródłowym OpenThread w celu utworzenia obrazu FTD i przekonwertuj go na format szesnastkowy.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Aby przeprowadzić flashowanie tablic, postępuj zgodnie z instrukcjami z kroku 4 sekcji z ćwiczenia z programowania w sieci Thread, aby użyć nrfjprog. Następnie podłącz wszystkie płytki przez port USB nRF do hosta. Ten sam zestaw kabli USB na micro USB można odłączyć od portów J-Link i podłączyć do portów USB nRF płytek deweloperskich nRF52840. Dzięki temu można przeprowadzić test, używając tylko tych 6 kabli. Aby uniknąć problemów, użyj 12 kabli i podłącz je do obu portów.

5. Uruchamianie serwera OTNS w trybie rzeczywistym

Uruchamianie OTNS z parametrami domyślnymi pozwala użytkownikowi symulować sieć Thread. Aby użyć go jako narzędzia do wizualizacji rzeczywistej sieci fizycznej, uruchom go za pomocą:

otns -raw -real -ot-cli otns-silk-proxy

Dzięki tym argumentom OTNS może oczekiwać komunikatów gRPC i UDP opisujących sposób wizualizacji sieci Thread, zamiast uruchamiać wiele procesów ot-cli w celu symulacji sieci. Przeglądarka powinna automatycznie otworzyć stronę wizualizacji z pustym obszarem roboczym.

4dd5b41bf7e71334.png

6. Przeprowadzanie testów jedwabnych z obsługą OTNS

Silk to w pełni zautomatyzowana platforma testowa służąca do sprawdzania funkcji, funkcji i wydajności systemu OpenThread na rzeczywistych urządzeniach. Instrukcje korzystania z tego pliku znajdziesz w projekcie README.

Plik silk_run_test.py znajdujący się pod adresem silk/unit_tests ułatwi Ci start. Silk zapewnia obsługę OTNS podczas uruchamiania przypadku testowego. Ponieważ usługa OTNS w trybie rzeczywistym działa już lokalnie, musimy tylko zmodyfikować plik silk_run_test.py, podając żądane lokalizacje wyjściowego pliku dziennika, wejściowych skryptów testowych i pliku hwconfig.ini. Argument -s localhost informuje Silk o wysyłaniu wiadomości OTNS do użytkownika localhost.

Na przykład można uruchomić test o nazwie ot_test_form_network.py, korzystając z następujących zmian w pliku silk_run_test.py. /opt/openthread_test/ to domyślna ścieżka plików logu i konfiguracji, których Silk używa, ale możesz użyć dowolnej ścieżki.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

W interfejsie internetowym OTNS pojawi się wizualizacja topologii utworzonej sieci.

ee443b66e0a6620b.png

W lewym górnym rogu widać statystyki wizualizacji, wersję OT i tytuł testu. W lewym dolnym rogu znajdują się elementy sterujące oknem dziennika, widoczne po prawej stronie. Początkowo węzły są dodawane, ale nie jest tworzona sieć. W miarę postępów testu zmieniają się tryby i role każdego węzła, a także tworzone są połączenia.

5c38e2c72519e620.png

7. Gratulacje

Gratulacje. Udało Ci się przeprowadzić test jedwabiu na fizycznych urządzeniach Thread i zwizualizować go za pomocą OTNS.

Przeprowadziłeś(-aś) test jedwabiu przy użyciu platform deweloperskich z oprogramowaniem obsługującym OTNS. Plansze zgłaszają swój stan do serwera Silk, który monitoruje i agreguje wszystkie te dane, a następnie wysyła je do usługi OTNS razem z innymi informacjami z testów. OTNS działające w trybie rzeczywistym wizualizuje sieć Thread w interfejsie internetowym.

Co dalej?

Spróbuj uruchomić inne przypadki testowe OpenThread zawarte w pakiecie Jedwab.

Więcej informacji

W usługach openthread.io i Silk znajdziesz różne zasoby OpenThread.

Dokumenty referencyjne