Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Testowanie sieci wątków z wizualizacją

5abd22afa2f2ee9a.png

Co to jest Thread, OpenThread, OTNS i Silk?

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

OpenThread wydany przez Google jest implementacją Thread o otwartym kodzie źródłowym. Pomimo niewielkiego rozmiaru kodu i miejsca w pamięci, OpenThread obsługuje wszystkie funkcje zdefiniowane w specyfikacji Thread 1.1.1 .

OpenThread Network Simulator (OTNS) może być używany do symulacji sieci Thread, uruchamiając symulowane węzły OpenThread na platformach POSIX. OTNS zapewnia łatwy w użyciu interfejs sieciowy (OTNS-Web) do wizualizacji i obsługi symulowanych sieci Thread.

Silk to w pełni zautomatyzowana platforma testowa do walidacji funkcji, funkcji i wydajności systemu OpenThread na rzeczywistych urządzeniach.

Czego się nauczysz

  • Struktura weryfikacji funkcjonalności OpenThread: Silk
  • Twórz OpenThread dla prawdziwych urządzeń z włączoną funkcją OTNS
  • Użyj interfejsu internetowego OTNS-Web do monitorowania stanu sieci Thread utworzonej przez uruchomienie przypadków testowych Silk

Ten codelab koncentruje się na używaniu Silk z OTNS. Inne funkcje Silk i OTNS nie są objęte gwarancją.

Co będziesz potrzebował

Sprzęt komputerowy:

  • 6 płyt dev Nordic Semiconductor nRF52840
  • 6 kabli USB do Micro-USB do podłączenia płyt
  • rozdzielacz USB

Oprogramowanie:

  • Linux x86_64.
  • Git .
  • Przejdź na wersję 1.11+ .
  • Przeglądarka internetowa. OTNS-Web wykorzystuje przeglądarkę internetową do wyświetlania symulacji.

Wymagania wstępne:

Ukończ wcześniejsze podstawowe Codelabs

Sprawdzanie wymagań wstępnych pakietu

Upewnijmy się, że spełnione są wszystkie wymagania wstępne.

  1. Uruchom, which otns aby sprawdzić, czy otns wykonywalny otns można przeszukiwać w $PATH .
  2. Uruchom which wpantund aby upewnić się, że wpantund jest dostępny.
  3. Upewnij się, że pakiety narzędzi ARM GNU, J-Link i nrfjprog są dostępne.
  4. Upewnij się, że można utworzyć plik binarny OpenThread, uruchamiając make -f examples/Makefile-nrf52840 w folderze openthread .

Uwaga: w celu uzyskania wskazówek dotyczących konfiguracji zapoznaj się z dokumentacją, do której prowadzą łącza. Warunek wstępny nr 1 dotyczy sieci Simulate Thread Networks przy użyciu OTNS, a inne pochodzą z sieci Build a Thread z płytami nRF52840 i OpenThread .

Aby sklonować Silk i skonfigurować środowisko, uruchom następujące 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 podłączonych do twojego komputera, zdefiniuj plik hwconfig.ini w następującym formacie:

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

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

Narzędzie o nazwie usbinfo jest instalowane jako część Silk, którego można użyć do znalezienia numeru seryjnego interfejsu i numeru interfejsu USB. DutSerial to numer SN wydrukowany na chipie lub wyświetlany przez usbinfo dla produktów J-Link.

Pola LayoutCenter i LayoutRadius w sekcji [DEFAULT] definiują kształt układu, gdy urządzenia są wizualizowane w interfejsie WWW. Dobrym punktem wyjścia może być ustawienie ich na przedstawione tutaj wartości.

Następnie definiuje sekcję dla każdego urządzenia testowego i dostarcza odpowiednich informacji o sprzęcie.

Budowanie obrazu i flashowanie

Domyślnie urządzenia OpenThread nie emitują komunikatów związanych z OTNS. Aby umożliwić płytom deweloperskim wysyłanie komunikatów o stanie do protokołów interfejsów, które są niezbędne do wizualizacji OTNS, uruchom następujące polecenie w katalogu źródłowym OpenThread, aby zbudować obraz FTD i przekonwertuj go na format szesnastkowy.

$ cd openthread
$ make -f examples/Makefile-nrf52840 clean
$ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1
$ cd output/nrf52840/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

Aby flashować tablice, postępuj zgodnie z instrukcjami w kroku 4 instrukcji Codelab sieci budowania wątków, aby użyć nrfjprog . Następnie podłącz wszystkie płyty przez port USB nRF do komputera głównego. Ten sam zestaw kabli USB do Micro-USB można odłączyć od portów J-Link i podłączyć do portów nRF USB na płytach dev nRF52840. W ten sposób można przeprowadzić test przy użyciu tylko tych 6 kabli. Aby uniknąć kłopotów, użyj 12 kabli i podłącz je do obu portów.

Uruchomienie OTNS z domyślnymi parametrami umożliwia użytkownikowi symulację sieci Thread. Aby użyć go jako narzędzia do wizualizacji rzeczywistej sieci fizycznej, uruchom go z:

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

Te argumenty mówią OTNS, aby spodziewał się komunikatów gRPC i UDP, które opisują sposób wizualizacji sieci Thread, zamiast uruchamiania wielu procesów ot-cli celu symulacji sieci. Twoja przeglądarka powinna automatycznie otworzyć stronę wizualizacji z pustym płótnem.

4dd5b41bf7e71334.png

Silk to w pełni zautomatyzowana platforma testowa do walidacji funkcji, funkcji i wydajności systemu OpenThread na rzeczywistych urządzeniach. Instrukcje zawarte w projekcie README opisują, jak z niego korzystać.

Plik silk_run_test.py znajdujący się w silk/unit_tests daje ci przewagę. Silk zapewnia wsparcie OTNS podczas uruchamiania przypadku testowego. Ponieważ usługa trybu rzeczywistego OTNS już działa lokalnie, musimy po prostu zmodyfikować plik silk_run_test.py z żądanymi lokalizacjami dla wyjściowego pliku dziennika, wejściowych skryptów testowych i pliku hwconfig.ini . Argument -s localhost nakazuje Silkowi wysyłanie komunikatów OTNS do localhost .

Na przykład, można uruchomić test o nazwie ot_test_form_network.py używając następujących modyfikacji pliku silk_run_test.py . /opt/openthread_test/ to domyślna ścieżka, której Silk używa do zapisywania dziennika i pliku konfiguracyjnego, 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)

Wizualizacja topologii utworzonej sieci pojawi się w interfejsie WWW OTNS.

ee443b66e0a6620b.png

W lewym górnym rogu wyświetlane są statystyki wizualizacji, wersja OT i tytuł testu. W lewym dolnym rogu znajdują się elementy sterujące okna dziennika, które jest pokazane po prawej stronie. Początkowo węzły są dodawane, ale nie jest tworzona żadna sieć. W miarę postępu testu zmieniają się tryby i role każdego węzła oraz tworzone są łącza.

5c38e2c72519e620.png

Gratulacje, pomyślnie przeprowadziłeś test Silk na fizycznych urządzeniach Thread i zwizualizowałeś go za pomocą OTNS!

Wykonałeś test Silk przy użyciu płyt rozwojowych, które są flashowane oprogramowaniem sprzętowym obsługującym OTNS. Płyty zgłaszają swój status do serwera Silk, który monitoruje i agreguje je wszystkie oraz wysyła je do usługi OTNS wraz z innymi informacjami testowymi. OTNS działający w trybie rzeczywistym wizualizuje sieć Thread w interfejsie WWW.

Co dalej?

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

Dalsza lektura

Sprawdź openthread.io i Silk, aby uzyskać różne zasoby OpenThread.

Dokumentacja referencyjna