1. Wprowadzenie
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:
- Linux x86_64.
- Git
- Go w wersji 1.11 lub nowszej
- Przeglądarka. OTNS-Web używa przeglądarki do wyświetlania symulacji.
Wymagania wstępne:
2. Wymagania wstępne
Ukończ wcześniejsze podstawowe ćwiczenia z programowania
- Podstawy do malowania wątków. Aby zrozumieć, czego dotyczą te ćwiczenia z programowania, musisz znać podstawowe pojęcia dotyczące Thread.
- Tworzenie sieci Thread przy użyciu tablic nRF52840 i OpenThread W tym ćwiczeniu w Codelabs zakładamy, że udało Ci się utworzyć sieć Thread.
- Symuluj sieci Threads przy użyciu OTNS. W tym ćwiczeniu w Codelabs zakładamy, że udało Ci się uruchomić narzędzie OTNS.
Sprawdzam wymagania wstępne pakietu
Upewnijmy się, że zostały spełnione wszystkie wymagania wstępne.
- Uruchom
which otns
, aby sprawdzić, czy plik wykonywalnyotns
można wyszukać w programie$PATH
. - Uruchom
which wpantund
, by sprawdzić, czy wersjawpantund
jest dostępna. - 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.
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.
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.
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.