Tworzenie sieci Thread z użyciem płyt Silicon Labs EFR32 i OpenThread w wersji Simplicity Studio v5

1. Wprowadzenie

26b7f4f6b3ea0700.png

OpenThread (OT) od Google to implementacja protokołu Thread typu open source. Google udostępniło OpenThread, aby technologia sieciowa używana w produktach Google Nest była szerzej dostępna dla deweloperów. Ma to przyspieszyć rozwój produktów do domów inteligentnych i budynków komercyjnych. Dzięki wąskiej warstwie abstrakcji platformy i niewielkiemu wykorzystaniu pamięci OpenThread jest bardzo przenośny. Obsługuje zarówno układy SoC, jak i układy NCP.

Specyfikacja Thread definiuje niezawodny, bezpieczny i energooszczędny protokół komunikacji bezprzewodowej między urządzeniami oparty na IPv6, który jest przeznaczony do zastosowań domowych i komercyjnych.

Firma Silicon Labs ulepszyła OpenThread, aby działał ze sprzętem Silicon Labs. Ten kod źródłowy jest dostępny na GitHubie, a także jako pakiet SDK instalowany z Simplicity Studio 5 (SSv5). Pakiet SDK zawiera w pełni przetestowany zrzut kodu źródłowego GitHub. Obsługuje szerszy zakres sprzętu niż wersja GitHub i zawiera dokumentację oraz przykładowe aplikacje niedostępne w GitHub.

Z tego przewodnika dowiesz się, jak rozpocząć tworzenie aplikacji OpenThread za pomocą pakietu Silicon Labs OpenThread SDK i Simplicity Studio 5. Ilustracja poniżej przedstawia płytki (BRD) i konfigurację sprzętu z routerem brzegowym OT (OTBR) oraz 2 urządzeniami Thread używanymi w tym laboratorium.

Konfiguracja sprzętu EFR32MG

Czego się nauczysz

  • Jak utworzyć projekt OpenThread za pomocą środowiska IDE Silicon Labs Simplicity Studio.
  • Jak tworzyć i wgrywać pliki binarne OpenThread CLI na płytki radiowe Silicon Labs.
  • Jak skonfigurować Raspberry Pi 3B+ lub nowszy jako router graniczny OpenThread (OTBR) za pomocą Dockera.
  • Jak utworzyć sieć Thread na OTBR.
  • Konfigurowanie urządzeń w sieci Thread poza pasmem.
  • Jak sprawdzić komunikację Thread między węzłami za pomocą polecenia ping.

2. Wymagania wstępne

Sprzęt:

  1. 3 płytki radiowe EFR32MGxx – można użyć dowolnej kombinacji tych urządzeń. W tym ćwiczeniu używamy BRD4166A jako RCP i dwóch BRD4168A jako urządzeń Full Thread.
    • EFR32MG12 (BRD4161A, BRD4166A, BRD4170A, BRD4304A)
    • EFR32MG13 (BRD4168A)
    • EFR32MG21 (BRD4180A, BRD4180B)
    Jeśli dopiero zaczynasz, możesz kupić jeden z zestawów startowych EFR32 Thread, który zawiera wymienione powyżej płytki.
  2. BRD4001A: bezprzewodowe zestawy startowe (WSTK) do obsługi modułów radiowych. Z wyjątkiem BRD4166A wszystkie płytki radiowe wymagają głównej płytki startowej. Kable mini USB do podłączania i zasilania głównych płytek lub kabel micro USB do BRD4166A.

WSTK AEM

  1. Raspberry Pi 3B+ lub nowszy z obrazem systemu Raspbian Stretch Lite lub Raspbian Stretch z Desktopem, który jest połączony z internetem przez Ethernet. Konfigurujemy go jako router graniczny OT.
  2. System hosta Windows/Linux/Mac z co najmniej 2 portami USB i połączeniem z internetem. Wymagania sprzętowe i systemowe znajdziesz na stronie SSv5.
  3. Co najmniej 1 kabel Ethernet do podłączenia Raspberry Pi do internetu. Zestawy WSTK obsługują też debugowanie i flashowanie przez IP, więc opcjonalnie można użyć dodatkowych kabli Ethernet do podłączenia zestawu WSTK do systemu hosta za pomocą przełącznika Ethernet.

Oprogramowanie:

  • Simplicity Studio 5 zainstalowane i zaktualizowane w systemie hosta Windows/Linux/Mac z 
    • Łańcuch narzędzi GNU ARM
    • Pakiet Gecko SDK w wersji 3.2.0 lub nowszej oraz pakiet Silicon Labs OpenThread SDK.

3. Konfiguracja sprzętu

To ćwiczenie zostało utworzone przy użyciu

  1. EFR32MG12 BRD4166A Thunderboard Sense 2 jak pokazano po lewej stronie.
  2. Dwa moduły EFR32MG13 BRD4168A, jak pokazano po prawej stronie.
  3. Simplicity Studio w wersji 5 zainstalowane w systemie macOS Catalina 10.15.7 z 
    1. Gecko SDK 3.2.0
    2. GNU ARM w wersji 7.2.1

BRD4168A

Podłącz każdą płytę główną zestawu startowego do hosta za pomocą kabla USB, jak pokazano na ilustracji poniżej. Połączenia te umożliwią programowanie i analizę sieci RCP oraz urządzeń końcowych. Najpierw użyjemy komputera hosta, aby zaprogramować BRD4166A za pomocą oprogramowania ot-rcp, a następnie połączymy go z Raspberry Pi. Opcjonalnie urządzenia końcowe można podłączyć do komputera hosta za pomocą zwykłego przełącznika Ethernet. Zestawy startowe obsługują też programowanie i analizę sieci w protokole IPv4.

Połączenia

4. Konfiguracja oprogramowania

Możesz to zrobić na 2 sposoby. Obie opcje umożliwiają flashowanie oprogramowania, które jest wymagane w tym Codelabs.

  1. Projekty: (zalecane) utwórz, skompiluj i wgraj przykładową aplikację. Ta opcja umożliwia dostosowanie aplikacji w projekcie.
  2. Wersje demonstracyjne: (opcjonalnie) flashuj gotowe wersje demonstracyjne bezpośrednio na płycie radiowej dla dowolnej z przykładowych aplikacji. Zachęcamy użytkowników do wypróbowania konfiguracji oprogramowania demonstracyjnego jako ćwiczenia opcjonalnego. Szczegółowe informacje znajdziesz w sekcji „Opcjonalna konfiguracja oprogramowania sprzętowego – wersje demonstracyjne” na końcu tego ćwiczenia.

W tym samouczku użyjemy metody opartej na projekcie.

Tworzenie projektów na podstawie przykładów

Utworzymy 2 projekty. Projekt ot-rcp dla BRD4166A i projekt ot-cli-ftd dla dwóch BRD4168A. Wykonaj te czynności i wybierz odpowiednią aplikację przykładową dla swojej płytki.

  1. Otwórz menu Plik w Studio i wybierz Nowy > Kreator projektu Silicon Labs. Otworzy się okno wyboru platformy docelowej, pakietu SDK i zestawu narzędzi. Nie zmieniaj domyślnego środowiska IDE Simplicity ani łańcucha narzędzi GNU obsługiwanego przez OpenThread. Kliknij Dalej.
    • Płytki docelowe: wyświetla wybraną płytkę radiową (BRD4168A) wraz z płytką główną (BRD4001A).
    • Urządzenie docelowe: to pole zawiera informacje o mikrokontrolerze (MCU) na płycie. Płytka BRD4168A ma wbudowany mikrokontroler EFR32MG13.
    • Pakiet SDK: tutaj możesz wybrać wersję pakietu SDK OT, z której korzystasz. Informacje o pakiecie obejmują np. tag pakietu SDK i wersję OpenThread od Silicon Labs Platform 4.0.1.0OpenThread 2.0.1.0 (GitHub-55af6ce2c).
    • IDE/ Toolchain: łańcuch narzędzi, który będzie używany do kompilowania projektu OT. Używamy GNU ARM.

Kreator nowego projektu

  1. Otworzy się okno wyboru projektu przykładowego. Zobaczysz listę projektów przykładowych. Aby wyszukać konkretny przykład, użyj filtrów Thread (Typ technologii) i słów kluczowych. Zanotuj numer wersji pakietu SDK Gecko. Ten tag wersji będzie potrzebny podczas konfigurowania Raspberry Pi jako routera granicznego. Wybierz ot-cli-ftd, a następnie kliknij DALEJ.

Kreator nowego projektu – krok 2

  1. Otworzy się okno konfiguracji projektu. Możesz tu zmienić nazwę projektu, domyślną lokalizację pliku projektu oraz określić, czy chcesz połączyć pliki projektu, czy je skopiować. Połączone pliki projektu wskazują pakiet SDK, a wszystkie wprowadzone zmiany są dokonywane w pakiecie SDK i wykorzystywane w przyszłych projektach. Kopiowanie źródeł projektu umożliwia edytowanie lokalnej kopii projektu, dzięki czemu pliki pakietu SDK pozostają nienaruszone. Opcja „Połącz pakiet SDK i skopiuj źródła projektu” jest domyślnie zalecana. Kliknij ZAKOŃCZ.

Krok 3 kreatora nowego projektu

  1. Otworzy się widok Simplicity IDE Perspective z otwartym narzędziem Project Configurator na karcie OVERVIEW (PRZEGLĄD).

Opis projektu

Projekt jest konfigurowany na karcie Komponenty oprogramowania przez instalowanie i odinstalowywanie komponentów oraz konfigurowanie zainstalowanych komponentów. Sprawdzane są zainstalowane komponenty. Kliknij Installed Components (Zainstalowane komponenty), aby wyświetlić przefiltrowaną listę komponentów zainstalowanych przez przykładową aplikację. Wszystkie zmiany są zapisywane automatycznie, a pliki projektu są generowane automatycznie. Postęp jest widoczny w prawym dolnym rogu widoku Simplicity IDE.

Komponenty oprogramowania

W tej wersji demonstracyjnej użyjemy domyślnej konfiguracji aplikacji przykładowych. Powtórz powyższe kroki, aby utworzyć projekt ot-rcp dla innej tablicy.

Kompilowanie i flashowanie projektów

Twórz i flashuj projekty ot-rcpot-cli-ftd.

  1. Po skonfigurowaniu projektu kliknij Element sterujący kompilacją (ikona młotka) na górnym pasku narzędzi. Możesz też kliknąć projekt prawym przyciskiem myszy i wybrać opcję „Build project” (Skompiluj projekt).

Przycisk Kompiluj projekt

  1. Postęp jest wyświetlany w konsoli i na pasku postępu w prawym dolnym rogu. W tym oknie wyjściowym pojawią się też wszelkie błędy lub ostrzeżenia związane z projektem.

Okno danych wyjściowych kompilacji projektu

  1. Obrazy binarne są generowane po pomyślnej kompilacji projektu. Obraz binarny możesz wgrać z widoku Eksploratora projektu. Znajdź plik .bin, .hex lub .s37 w podkatalogu kompilatora. Kliknij plik prawym przyciskiem myszy i wybierz Flash to Device (Wgraj na urządzenie). Jeśli masz więcej niż 1 urządzenie, wybierz urządzenie, które chcesz zaprogramować, i kliknij OK. Otworzy się program Flash Programmer z wypełnioną ścieżką pliku. Kliknij PROGRAM.

Flash

5. Podsumowanie konfiguracji oprogramowania

Na tym etapie powinny być już utworzone, skompilowane i wgrane odpowiednie wersje oprogramowania na płytki radiowe. Po wgraniu oprogramowania ot-rcp na BRD4166A odłącz go od systemu hosta i połącz z Raspberry Pi.

Po ukończeniu tej sekcji konfiguracja sprzętu sieci Thread będzie wyglądać tak.

Konfiguracja EFR32MG

6. Konfigurowanie konsoli szeregowej na urządzeniach ot-cli-ftd

Aby uruchomić interfejs konsoli, w widoku Simplicity IDE kliknij prawym przyciskiem myszy urządzenie J-Link w oknie Devices View / Debug Adapters (Widok urządzeń / Adaptery debugowania). Kliknij Uruchom konsolę. Aby wyświetlić prompt w Konsoli, wybierz kartę Serial 1naciśnij Enter. Sprawdź stan węzła FTD.

Widok konsoli FTD Studio

Zauważysz, że nie mamy jeszcze konsoli dla ot-rcp. W następnym kroku skonfigurujemy Raspberry Pi jako router graniczny OT i skonfigurujemy konsolę dla ot-rcp.

7. Konfigurowanie Raspberry Pi jako routera brzegowego

Firma Silicon Labs zaleca wdrażanie kontenera Dockera firmy z OTBR. Uruchomienie OTBR w kontenerze umożliwia tworzenie łatwych do wdrożenia artefaktów oraz szybkie prototypowanie i testowanie.

Obrazy Silicon Labs OTBR są hostowane na siliconlabsinc DockerHub i mają tagi. Każdy tag odpowiada wersji GSDK:

https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags

Kontenery Dockera muszą być używane z RCP utworzonymi za pomocą Simplicity Studio 5 w przypadku danej wersji. Upewnij się, że wersja tagu w kontenerze jest zgodna z wersją GSDK, której używasz do testowania. Jeśli na przykład w momencie, gdy w oknie Wybór projektu przykładowego wybrano opcję ot-rcp, wersja GDSK to Gecko SDK Suite v4.0.1 (140), użyj obrazu siliconlabsinc/openthread-border-router:gsdk-4.0.1.

Wersja GSDK

Konfiguracja Raspberry Pi

  1. Na karcie SD zainstaluj obraz systemu Raspbian Stretch Lite lub Raspbian Stretch z interfejsem graficznym.
  2. Możesz połączyć się z Raspberry Pi za pomocą SSH lub pracować bezpośrednio na Raspbian Desktop. Otwórz terminal.
  3. Przed zainstalowaniem Dockera zaktualizuj lokalne repozytoria i system zarządzania pakietami (użyj poleceń apt-get updateapt-get upgrade).

Instalowanie obrazu Dockera

  1. Zainstaluj Dockera na RPi za pomocą tego polecenia.
    curl -sSL https://get.docker.com | sh
    
  2. Po zakończeniu możesz zmodyfikować ustawienia użytkownika Dockera, aby nie wymagać sudo przed każdym poleceniem. Wymagane ponowne uruchomienie.
    sudo usermod -aG docker $USER
    
  3. Aby zainstalować kontenery, wydaj te polecenia. Pamiętaj, że w danym momencie możesz mieć uruchomiony tylko 1 kontener routera brzegowego z RCP. Sprawdź też, czy wersja GSDK w Simplicity Studio jest zgodna z odpowiednim obrazem Dockera. Na przykład: gsdk-4.0.1.
    docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
    

Konfigurowanie i uruchamianie Dockera

  1. Musisz skonfigurować port TTY, którego chcesz używać w OTBR, aby połączyć RCP podczas uruchamiania. Znajdź port TTY na urządzeniu RCP. Najłatwiej to zrobić, szukając wpisu /tty/dev... po podłączeniu RCP. Zazwyczaj powinna to być wartość /dev/ttyUSB0 lub /dev/ttyACM0.
  2. Uruchom instalację Dockera za pomocą tego polecenia. Pamiętaj, aby zastąpić nazwę obrazu Dockera odpowiednią wersją GSDK. Na przykład: gsdk-4.0.1.
    docker run -d --name "otbr" \
     --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \
     -p 8080:80 --dns=127.0.0.1 -it \
     --volume /dev/ttyACM0:/dev/ttyACM0 \
     --privileged siliconlabsinc/openthread-border-router:gsdk-4.0.1 \
     --radio-url spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800 \
     --backbone-interface eth0
    
    • -d zapewnia, że kontener działa w trybie odłączonym.
    • W każdej chwili możesz wyświetlić dzienniki działania kontenera za pomocą polecenia docker logs.
    • --name jest aktywny, dopóki kontener Dockera nie zostanie prawidłowo zamknięty (lub usunięty).
    • Port 8080 wskazuje port serwera WWW hostującego stronę zarządzania routerem brzegowym.
    • ?uart-baudrate=460800 jest wymagane w opcjach adresu URL radia, aby uniknąć problemów z fragmentacją i ponownym składaniem w przypadku UART, z kosztownymi operacjami, takimi jak DTLS z długimi pakietami IPv6.

Interakcja z węzłem RCP

Po uruchomieniu Dockera możesz komunikować się z węzłem RCP za pomocą interaktywnej powłoki, używając tego polecenia. Sprawdź stan węzła RCP.

$ docker exec -ti otbr sh -c "sudo ot-ctl"
> state 
disabled
Done

Możesz pobrać listę identyfikatorów uruchomionych kontenerów.

$ docker ps -aq

Możesz sprawdzić okno, w którym działa kontener Dockera OTBR, aby wyświetlić dane wyjściowe logu routera granicznego, lub śledzić log kontenera w ten sposób:

$ docker logs [container-id] -f

Opcjonalnie możesz zatrzymać, usunąć lub zamknąć obraz, jeśli kontener Dockera został prawidłowo załadowany.

$ docker stop otbr
$ docker rm otbr
$ docker kill otbr

Opcjonalnie: aby zamknąć powłokę, naciśnij CNTL + C.

Powinny być teraz widoczne 3 konsole.

  1. 2 konsole ot-cli-ftd w Simplicity Studio skonfigurowane jako urządzenia Full Thread.
  2. Jedna ot-ctl interaktywna powłoka na Raspberry Pi, która jest skonfigurowana jako router graniczny OT.

Teraz możemy utworzyć sieć Thread.

8. Tworzenie sieci Thread

Konfigurowanie RCP

Aby utworzyć sieć, zaczynamy od ot-ctl powłoki na OTBR, która służy do komunikacji z węzłem RCP. Wpisz te polecenia w podanej poniżej kolejności:

Indeks

Polecenie

Opis polecenia

Oczekiwana odpowiedź

1

dataset init new

Utwórz nową konfigurację sieci.

Gotowe

2

dataset commit active

Zatwierdź nowy zbiór danych w aktywnym operacyjnym zbiorze danych.

Gotowe

3

ifconfig up

Włącz interfejs Thread.

Gotowe

4

thread start

Włącz i dołącz operację protokołu Thread.

Gotowe

Poczekaj 10 sekund, aż interfejs Thread będzie gotowy.

5

state

Sprawdź stan urządzenia. Powinien być liderem.
Inne możliwe stany: offline, disabled, detached,
child, router lub leader

Lider
Gotowe

6

dataset

Wyświetl konfigurację sieci.
Twoje wartości będą się różnić od tych w tym samouczku.
Zanotuj kanał, klucz sieci,
nazwę sieci i identyfikator PAN.

Active Timestamp: 1
Channel: 20
Channel Mask: 0x07fff800
Ext PAN ID: 39ba71f7fc367160
Mesh Local Prefix: fd5c:c6b:3a17:40b9::/64
Network Key: 81ae2c2c17368d585dee71eaa8cf1e90
Network Name: OpenThread-008c
PAN ID: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
Security Policy: 0, onrcb
Done

Aby połączyć 2 urządzenia FTD z tą siecią wątkową, użyjemy numeru kanału i klucza sieci na urządzeniu ot-cli-ftd.

Konfigurowanie i dodawanie urządzenia FTD do sieci Thread (metoda poza pasmem)

W przypadku metody poza pasmem znamy wszystkie informacje o bezpieczeństwie i dodajemy węzeł ręcznie. W konsolach Simplicity dodaj oba urządzenia FTD do naszej sieci, używając tych poleceń w podanej poniżej kolejności.

Indeks

Polecenie

Opis polecenia

Oczekiwana odpowiedź

1

dataset channel 20

Ustaw kanał używany przez OTBR.

Gotowe

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

Aby urządzenie mogło połączyć się z siecią Thread, wymagany jest tylko klucz sieciowy.

Gotowe

3

dataset commit active

Zatwierdź nowy zbiór danych w aktywnym operacyjnym zbiorze danych.

Gotowe

4

ifconfig up

Włącz interfejs Thread.

Gotowe

5

thread start

Włącz i dołącz operację protokołu Thread.

Gotowe

Poczekaj 20 sekund, aż urządzenie dołączy do sieci i się skonfiguruje.

6

state

Wyświetl konfigurację sieci.

dziecko
Gotowe

Komunikacja między urządzeniami Thread

Użyjemy polecenia ping, aby sprawdzić, czy urządzenia mogą się ze sobą komunikować. Aby użyć polecenia ping, potrzebujemy adresów IPv6 urządzeń. Można je uzyskać za pomocą polecenia ipaddr.

> ipaddr
fd5c:c6b:3a17:40b9:0:ff:fe00:fc00		# Leader Anycast Locator (ALOC)
fd5c:c6b:3a17:40b9:0:ff:fe00:1800		# Routing Locator (RLOC)
fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03		# Mesh-Local EID (ML-EID)
fe80:0:0:0:c449:ca4a:101f:5d16			# Link-Local Address (LLA)

Z obu urządzeń FTD pinguj OTBR, używając adresu RLOC OTBR.

> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800
Done
> 
> 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms
16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms

Odpowiedź wskazuje, że ładunek został odebrany, a komunikacja przebiegła pomyślnie. Powtórz ten proces, aby wysłać pingi do urządzeń FTD z OTBR.

9. Gratulacje

Sieć Thread została utworzona.

Wiesz już:

  • Jak utworzyć projekt OpenThread za pomocą środowiska IDE Silicon Labs Simplicity Studio.
  • Jak tworzyć i wgrywać pliki binarne OpenThread CLI na płytki radiowe Silicon Labs.
  • Jak skonfigurować Raspberry Pi 3B+ lub nowszy jako router graniczny OpenThread (OTBR) za pomocą Dockera.
  • Jak utworzyć sieć Thread na OTBR.
  • Konfigurowanie urządzeń w sieci Thread poza pasmem.
  • Jak sprawdzić komunikację Thread między węzłami za pomocą polecenia ping.

Więcej informacji

Na stronach openthread.ioGitHub znajdziesz różne materiały dotyczące OpenThread, w tym:

10. Opcjonalna konfiguracja oprogramowania układowego – wersje demonstracyjne

Wersje demonstracyjne to gotowe obrazy oprogramowania układowego, które można pobrać na zgodne urządzenie. Najszybszym sposobem sprawdzenia, czy dla Twojego komponentu w Simplicity Studio dostępna jest wersja demonstracyjna, jest kliknięcie komponentu w widoku Debug Adapters (Adaptery debugowania), a następnie przejście do karty EXAMPLE PROJECTS & DEMOS (PRZYKŁADOWE PROJEKTY I WERSJE DEMONSTRACYJNE) w perspektywie Launcher (Uruchamianie). Wyłącz filtr przykładowych projektów i zaznacz pole wyboru Thread w sekcji Typ technologii.

Wersje demonstracyjne Studio

Wstępnie skompilowane obrazy aplikacji demonstracyjnych dostarczane z pakietem OpenThread SDK są zgodne z tymi płytkami:

  1. BRD4161a
  2. BRD4166a
  3. BRD4168a
  4. BRD4180a
  5. BRD4304a

W przyszłych wersjach pakietu SDK możemy zaktualizować tę listę, aby uwzględnić więcej płyt radiowych. Pełną listę obsługiwanych komponentów znajdziesz w informacjach o wersji pakietu Silicon Labs OpenThread SDK w sekcji Documentation (Dokumentacja).

Wgraj na odpowiednie płytki te wersje demonstracyjne. Aby flashować, wybierz płytkę w sekcji Debug Adapters (Debugery) po lewej stronie i kliknij RUN (URUCHOM) w przypadku odpowiednich przykładowych aplikacji. Wyskakujące okienko będzie pokazywać postęp flashowania.

  1. BRD4166A: ot-rcp – to urządzenie będzie działać jako procesor radiowy routera granicznego OT. Użyjemy tego urządzenia do utworzenia sieci Thread i dołączenia do niej pozostałych 2 urządzeń. Jako router graniczny urządzenie to pełni też funkcję bramy, która umożliwia urządzeniom w sieci Thread komunikację przez internet.
  2. 2 płytki BRD4168A: ot-cli-ftd – te 2 urządzenia będą pełnić funkcję urządzeń Full Thread Device. Dołączą one do sieci Thread utworzonej przez OTBR.