1. Giriş

OpenThread, Nesnelerin İnterneti (IoT) cihazları için tasarlanmış sağlam ve güvenli bir kablosuz mesh ağ protokolü olan Thread® ağ protokolünün açık kaynaklı bir uygulamasıdır. OpenThread, Google'ın Nest ekibi tarafından geliştirilmiştir ve geliştirici topluluğuna açık kaynaklı bir proje olarak ücretsiz sunulur.
Thread Spesifikasyonu, akıllı evlerde ve ticari binalarda yaygın olarak bulunan, kaynak kısıtlı cihazlar için güvenilir, güvenli ve enerji tasarruflu bir kablosuz iletişim protokolü oluşturur. OpenThread, Thread'deki tam ağ katmanı kapsamını (ör. IPv6, 6LoWPAN, MAC güvenliğiyle IEEE 802.15.4, örgü bağlantısı oluşturma ve örgü yönlendirme) içerir.
Telink, OpenThread uygulamasını Zephyr RTOS'ye entegre ederek Telink donanımıyla sorunsuz uyumluluk sağlamıştır. Bu entegrasyonun kaynak koduna GitHub'dan kolayca erişilebilir. Ayrıca, yazılım geliştirme kiti (SDK) olarak da sağlanır.
Bu codelab'de, OpenThread'i gerçek donanım üzerinde programlayacak, bir Thread ağı oluşturup yönetecek ve düğümler arasında mesaj alışverişi yapacaksınız. Aşağıdaki resimde, OT Sınır Yönlendirici (OTBR) ve bir Thread cihazının yer aldığı donanım kurulumu gösterilmektedir.

Neler öğreneceksiniz?
- Telink Zephyr geliştirme ortamını kullanarak OpenThread uygulamasını ayarlama.
- OpenThread CLI örneklerini (
ot-cli-ftdveot-rcp) oluşturmak ve Telink B91 geliştirme kartlarına yüklemek için. - Raspberry Pi 3B+ veya daha yeni bir modelde Docker kullanarak OpenThread Border Router (OTBR) kurmak için.
- OTBR'de Thread ağı oluşturmak için.
- Bant dışı hata ayıklama kullanarak Thread ağına cihaz eklemek için.
- KSA'yı kullanarak Thread ağındaki düğümler arasındaki bağlantıyı doğrulama
İhtiyacınız olanlar
Donanım:
- İki B91 geliştirme kartı.
- Raspbian OS Image yüklü bir Raspberry Pi 3B+ veya daha yeni bir model.
- En az iki USB bağlantı noktasına sahip bir Linux makine.
- İnternete bağlı bir anahtar (veya yönlendirici) ve birkaç Ethernet kablosu.
Yazılım:
- Telink Burning and Debugging Tool —— LinuxBDT.
- PuTTY gibi bir seri bağlantı noktası terminal aracı.
- Git ve West gibi diğer araçlar.
2. Ön koşullar
Thread Kavramları ve OpenThread CLI
Bu codelab'den önce temel Thread kavramları ve OpenThread CLI hakkında bilgi edinmek için OpenThread Simulation codelab'ini incelemeniz faydalı olabilir.
Linux makine
Linux makinesi (Ubuntu v20.04 LTS veya sonraki sürümler), Telink Zephyr geliştirme ortamını kurmak ve tüm Thread geliştirme kartlarına yazılım yüklemek için derleme makinesi olarak işlev görür. Bu görevleri gerçekleştirmek için Linux makinede iki kullanılabilir USB bağlantı noktası ve internet bağlantısı olması gerekir.
Seri Bağlantı Noktası Bağlantısı ve Terminaller
Cihazı doğrudan Linux makinenin USB bağlantı noktasına takabilirsiniz. Ayrıca, cihazlara erişmek için bir seri bağlantı noktası terminal aracına ihtiyacınız olacaktır.
Bu codelab'de, FTD Joiner ve Raspberry Pi'yi kontrol etmek için terminal aracı PuTTY kullanılır. Kullanımıyla ilgili genel bir bakış sunar ancak başka terminal yazılımları da kullanılabilir.
Telink B91 Development Kit
Bu codelab için iki set B91 Geliştirme Kiti gerekir. Aşağıdaki fotoğrafta, bir setteki minimum sayıda gerekli bileşen gösterilmektedir.

Bu kitlerden biri RCP (Radyo Yardımcı İşlemcisi), diğeri ise FTD (Tam Thread Cihazı) olarak kullanılır. Kiti henüz teslim almadıysanız Telink'in resmi web sitesinden daha fazla bilgi edinebilirsiniz. Kullanılacak bazı bileşenler şunlardır:
Dizin | Ad |
1 | Telink B91 Development Board |
2 | Telink Burning Board |
3 | 2,4 GHz Anten |
4 | USB kablosu (USB A - mini USB) |
Raspbian OS Image ile Raspberry Pi 3B+ veya daha yeni bir model
Bu codelab'de Raspbian Bullseye Lite OS görüntüsü veya Raspbian Bullseye with Desktop yüklü bir Raspberry Pi 3B+ ya da daha yeni bir model gereklidir. Ethernet üzerinden internete bağlanır ve OpenThread Border Router (OTBR) için ana makine olarak yapılandırılır.
Ağ Bağlantısı
İnternete bağlı bir anahtar (veya yönlendirici) ve birkaç Ethernet kablosu. Raspberry Pi'yi Linux makinesine bağlamak için kullanılır. Böylece, kullanıcılar Raspberry Pi'yi ana makine üzerinden yapılandırabilir.
LinuxBDT
Tüm Telink çip serileri için geçerli olan Telink Burning and Debugging Tool (BDT), OpenThread yazılımını Telink B91 geliştirme kartlarına silmenize ve yüklemenize olanak tanır. Linux makinenize X86 tabanlı Linux sürümü linuxBDT'yi yükleyin.
Diğer
- Telink Zephyr geliştirme ortamını kurmak için Git.
- West, Zephyr projesini yönetmek ve OpenThread ikililerini oluşturmak için kullanılır.
3. Donanım yazılımını ayarlama
Telink Zephyr geliştirme ortamını kurma
Linux makinede bir CLI terminali açın ve APT'nizin güncel olduğundan emin olmak için aşağıdaki komutları çalıştırarak başlayın.
$ sudo apt update $ sudo apt upgrade
Bu işlem tamamlandıktan sonra aşağıdaki adımlarla devam edin.
- Bağımlılıkları yükleyin.
Zephyr şu anda CMake (3.20.0), Python3 (3.6) ve Devicetree Compiler (1.4.6) gibi temel bağımlılıkların minimum sürümlerini gerektiriyor.$ wget https://apt.kitware.com/kitware-archive.sh $ sudo bash kitware-archive.sh $ sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \ python3-setuptools python3-tk python3-wheel xz-utils file make gcc \ gcc-multilib g++-multilib libsdl2-dev
Sonraki adımlara geçmeden önce sisteminizde yüklü olan sürümleri doğrulayın. Sürümler doğru değilse APT yansısını kararlı ve güncel bir yansıyla değiştirin veya bu bağımlılıkları manuel olarak güncelleyin.$ cmake --version $ python3 --version $ dtc --version
- Batı yüklemesi
$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
~/.local/binöğesinin$PATHortam değişkeninizde olduğundan emin olun. - Zephyr Project kaynak kodunu alın.
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- Zephyr için ek Python bağımlılıklarını yükleyin.
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- Zephyr araç zincirini kurun. Çoğu kartı flash etmenize olanak tanımak için Zephyr araç zincirini (yaklaşık 1-2 GB) yerel bir dizine indirin.
Zephyr SDK'sını indirip aşağıdaki gibi önerilen yola yerleştirin.$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
Burada [-x.y.z], -0.16.1 gibi herhangi bir metin olabilen isteğe bağlı bir metindir. SDK yüklendikten sonra dizin taşınamaz. Ardından Zephyr araç zincirini yükleyin.$HOME/zephyr-sdk[-x.y.z] $HOME/.local/zephyr-sdk[-x.y.z] $HOME/.local/opt/zephyr-sdk[-x.y.z] $HOME/bin/zephyr-sdk[-x.y.z] /opt/zephyr-sdk[-x.y.z] /usr/zephyr-sdk[-x.y.z] /usr/local/zephyr-sdk[-x.y.z]
$ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ cd zephyr-sdk-0.16.1 $ ./setup.sh -t riscv64-zephyr-elf -h -c
- Hello World örneğini oluşturun. Öncelikle, Hello World örneğini kullanarak resmi Zephyr proje yapılandırmasının doğru olduğunu doğrulayın, ardından özel projenizi ayarlamaya devam edin.
West derleme komutunu kullanarak Zephyr deposunun kök dizininden hello_world örneğini oluşturun.$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
zephyr.binadlı donanım yazılımınıbuild/zephyr directoryaltında bulabilirsiniz. - Zephyr ortam komut dosyasını
~/.bashrckonumuna ekleyin. Aşağıdaki komutları çalıştırın.$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- Telink Zephyr uzak deposunu ekleyin. Telink deposunu yerel olarak geliştirme dalı olarak indirin ve güncelleyin.
$ cd ~/zephyrproject/zephyr $ git remote add telink-semi https://github.com/telink-semi/zephyr $ git fetch telink develop $ git checkout develop $ west update $ west blobs fetch hal_telink
Daha fazla bilgi için Zephyr Doc – Getting Started Guide (Zephyr Dokümanı - Başlangıç Kılavuzu) başlıklı makaleyi inceleyebilirsiniz.
Telink LinuxBDT'yi kurma
Telink LinuxBDT aracını indirip B91 Geliştirme Kartı'na ürün yazılımı yüklemeyi etkinleştirmek için Linux makinenizdeki yerel bir dizine (ör. ana dizin ~) çıkarın.
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
Burning Board'u USB arayüzü üzerinden Linux makineye bağlayın ve aşağıdaki komutları girin.
$ cd LinuxBDT $ sudo ./bdt lsusb -v Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6 Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller
"Telink Web Debugger v3.6" mesajını görüyorsanız BDT programlayıcısının Linux makinesine başarıyla bağlandığı anlaşılır.
Donanım Yazılımı Derlemesi
Bu codelab'de iki tür OpenThread ürün yazılımı oluşturulacak:
ot-cli-ftd,- ve
ot-rcp.
Derleme yöntemleri şunlardır:
- Radyo yardımcı işlemcisi (
ot-rcp)$ cd ~/zephyrproject $ rm -rf build_ot_coprocessor $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
- Etkileşimli Komut Satırı ile Tam Özellikli Thread Cihazı (
ot-cli-ftd)$ cd ~/zephyrproject $ rm -rf build_ot_cli_ftd $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
Donanım Yazılımı Yükleme
Aşağıdaki şekilde gösterildiği gibi bir USB kablosu kullanarak B91 Geliştirme Kartı'nı Burning Board'a bağlayın.

Komut satırında, aşağıdaki komutları çalıştırarak yazılım yakma işlemini gerçekleştirin (ot-cli-ftd yazılımının yanıp sönmesi örnek olarak kullanılmıştır).
$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr $ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin $ cd ~/LinuxBDT $ sudo ./bdt 9518 ac Activate OK! $ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin EraseSectorsize... Total Time: 2181 ms Flash writing... [100%][-] [##################################################] File Download to Flash at address 0x000000: 491700 bytes Total Time: 30087 ms
ot-rcp için flaş yöntemi, ot-cli-ftd için kullanılanla temelde aynıdır. Ancak, donanım yazılımı yolları ve adları farklıdır.
Flaşlama işleminden sonra, iki B91 Geliştirme Kartı'nı uygun şekilde işaretleyerek birbirinden ayırın. ot-cli-ftd ile yanıp sönen kartı "FTD Joiner", ot-rcp ile yanıp sönen kartı ise "RCP" olarak etiketleyin.
4. FTD Joiner cihazı için Seri Konsol yapılandırma
Resimde gösterildiği gibi, FTD birleştiricisini doğrudan Linux makinesinin USB bağlantı noktasına takın.

FTD Joiner Device'ı Linux makinesine bağladıktan sonra PuTTY'yi açın. Ardından yeni bir terminal oluşturun, seri bağlantı noktası bilgilerini ayarlayın ve seri bağlantı noktasını açın.

OpenThread komut satırı referansını OpenThread CLI Reference (OpenThread KSA Referansı) sayfasında bulabilirsiniz. Tüm komutların başına ot eklediğinizden emin olun.
Örnekler:
> ot state disabled Done > ot channel 11 Done >
5. Raspberry Pi'yi OpenThread Border Router olarak ayarlama
OpenThread sınır yönlendirici, iki ana bölümden oluşan bir cihazdır:
- Raspberry Pi, bir sınır yönlendirici (BR) olarak işlev görmek için gereken tüm hizmetleri ve donanım yazılımlarını içerir.
- İleti dizisi iletişiminden RCP sorumludur.
Radyo yardımcı işlemcisi (RCP)
ot-rcp donanım yazılımını yüklemek için ot-cli-ftd donanım yazılımı yükleme işlemindeki adımları uygulayın. B91 Geliştirme Kartı'nı aşağıdaki şekilde gösterildiği gibi Raspberry Pi'deki bir USB bağlantı noktasına bağlayın.

Raspberry Pi
- Raspbian Bullseye Lite OS görüntüsünün veya Raspbian Bullseye with Desktop'ın SD karta doğru şekilde yazıldığından emin olun.
- Raspberry Pi'ye SSH ile bağlanabilir veya doğrudan Raspbian Masaüstü ile çalışabilirsiniz. Bu codelab'de SSH kullanılacaktır.
- Bir sonraki adımda OTBR Docker'ı yüklemeye devam etmeden önce yerel depoyu ve paket yöneticisini güncellediğinizden emin olun.
$ sudo apt-get update $ sudp apt-get upgrade
Docker'ı yükle
Önceki adımda yalnızca yerel depoyu ve paket yöneticisi APT'yi güncellediyseniz Raspberry Pi'yi yeniden başlatın ve ardından bir SSH terminal penceresi açın.
- Docker'ı yükleyin:
$ curl -sSL https://get.docker.com | sh
- İzni vermek için mevcut hesabı bir Docker grubuna yerleştirin. Böylece her komutun önüne
sudoeklenmesi gerekmez. Değişikliklerin geçerli olması için Raspberry Pi'yi yeniden başlatmanız gerekir.$ sudo usermod -aG docker $USER
- Docker başlatılmamışsa başlatın:
$ sudo dockerd
- OTBR güvenlik duvarı komut dosyaları, Docker container'da kurallar oluşturur. Bundan önce, iptables'in çekirdek modülünü yüklemek için
modprobekomutunu çalıştırın.$ sudo modprobe ip6table_filter
Docker'ı yapılandırma ve çalıştırma
Bu codelab, OTBR Docker görüntüsünü doğrudan OpenThread Docker Hub'dan çeker. Bu görüntü, OpenThread ekibi tarafından test edilip doğrulandı.
- En son görüntüyü çekin:
$ docker pull openthread/otbr:latest
- Docker container'daki resim listesini kontrol edin:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
/devişaretini kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin.ttyACM0, RCP'nin doğru şekilde bağlandığını gösterir.$ ls /dev/tty* ... /dev/ttyACM0 ...
- OTBR Docker'ı ilk kez çalıştırın ve RCP'nin seri bağlantı noktasını referans alın (
ttyACM0). Bu OTBR Docker'ı kullanmaya devam etmek istiyorsanız docker start otbr komutunu kullanın.$ docker run --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 openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
- Raspberry Pi ile RCP arasındaki bağlantıyı test etmek için yeni bir SSH terminal penceresi açın.
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
İsteğe bağlı Docker komutları:
- Çalışan Docker kapsayıcısı hakkında bilgi edinme:
$ docker ps -aq
- OTBR Docker'ı durdurma:
$ docker stop otbr
- OTBR Docker'ı kaldırma:
$ docker rm otbr
- OTBR Docker'ı yeniden yükleyin:
$ docker restart otbr
Bu noktada bir FTD Joiner cihazı ve bir OTBR hazır durumdadır. Thread ağını oluşturmak için bir sonraki adıma geçebilirsiniz.
6. Thread ağı oluşturma
RCP'de Thread ağı oluşturma
Thread ağı oluşturmak için OTBR'de ot-ctl kabuğunu kullanırız. Önceki bölümde kabuktan çıktıysanız SSH terminalinde kabuğu tekrar başlatmak için aşağıdaki komutu girin:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
Ardından, komutları tabloda belirtilen sırayla girin ve bir sonraki adıma geçmeden önce her adımın beklenen sonucu verdiğinden emin olun.
Dizin | Komut | Giriş | Beklenen Yanıt | ||
1 |
| Yeni bir rastgele ağ veri kümesi oluşturun. | Bitti | ||
2 |
| Yeni veri kümesini, kalıcı olmayan depolama alanındaki Etkin Operasyonel Veri Kümesi'ne işleyin. | Bitti | ||
3 |
| IPv6 arayüzünü açın. | Bitti | ||
4 |
| Thread protokolü işlemini etkinleştirin ve bir Thread ağına bağlanın. | Bitti | ||
İş parçacığı arayüzünün açılması için 10 saniye bekleyin. | |||||
5 |
| Cihaz durumunu kontrol edin.Bu komut, lider olana ve sonraki adıma geçene kadar birden çok kez çağrılabilir. | leader | ||
6 |
| Tam Etkin Operasyonel Veri Kümesi'ni kontrol edin ve ağ anahtarını kaydedin. | Etkin Zaman Damgası: 1 | ||
Ağ oluşturma sırasında OTBR tarafından rastgele oluşturulan ağ anahtarı, ot-cli-ftd cihazları bu Thread ağına katıldığında kullanılır.
FTD Joiner'ı bant dışı devreye alma yoluyla Thread'e ekleme
Bant dışı devreye alma, ağ kimlik bilgilerinin ağa katılmayı bekleyen cihazlara kablosuz olmayan yöntemlerle (ör. OpenThread KSA'ya manuel olarak girme) iletilmesini ifade eder. FTD Joiner'ın seri konsoluna aşağıdaki komutları sırayla girin.
Dizin | Komut | Giriş | Beklenen Yanıtlar | ||
1 |
| Bir cihazın Thread ağına bağlanması için yalnızca Ağ Anahtarı gerekir. | Bitti | ||
2 |
| Yeni veri kümesini, kalıcı olmayan depolama alanındaki Etkin Operasyonel Veri Kümesi'ne işleyin. | Bitti | ||
3 |
| IPv6 arayüzünü açın. | Bitti | ||
4 |
| Thread protokolü işlemini etkinleştirin ve bir Thread ağına bağlanın. | Bitti | ||
Cihaz katılırken ve kendini yapılandırırken 20 saniye bekleyin. | |||||
5 |
| Cihaz durumunu kontrol edin. | child/router | ||
Topoloji
Aşağıdaki kod snippet'lerindeki gibi yanıtlar almak için SSH terminaline ipaddr, child table, router table gibi komutlar girin.
> ipaddr rloc fd8c:60bc:a98:c7ba:0:ff:fe00:b000 Done > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ | 1 | 0xb001 | 240 | 23 | 3 | 51 |1|1|1| 3| 0 | 0 | 129 | 82bc12fbe783468e | Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done ... > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 33 | 0x8400 | 63 | 0 | 3 | 3 | 13 | e61487c1cda940a6 | 1 | | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done
OTBR'nin RLOC16 değeri 0xb000, FTD Joiner'ın RLOC16 değeri ise başlangıçta 0xb001'dir. Ardından, yönlendirici kimliği alındıktan sonra FTD Joiner'ın RLOC16 değeri 0x8400 olur. FTD Joiner'ın alt öğeden yönlendiriciye yükseltildiği görülüyor.
Mevcut Thread ağında iki düğüm bulunur ve topoloji aşağıdaki şekilde gösterildiği gibidir.

7. Thread Cihazları Arasında İletişim
ICMPv6 İletişimi
Aynı ağdaki Thread cihazlarının birbiriyle iletişim kurup kuramadığını kontrol etmek için ping komutunu kullanırız. Öncelikle, cihazın RLOC'unu almak için ipaddr komutunu kullanın.
> ipaddr fd8c:60bc:a98:c7ba:0:ff:fe00:fc11 fdbd:7274:649c:1:1d19:9613:f705:a5af fd8c:60bc:a98:c7ba:0:ff:fe00:fc10 fd8c:60bc:a98:c7ba:0:ff:fe00:fc38 fd8c:60bc:a98:c7ba:0:ff:fe00:fc00 fd8c:60bc:a98:c7ba:0:ff:fe00:b000 # Routing Locator (RLOC) fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 fe80:0:0:0:78e3:5410:9d61:1f7e Done
Ping işlemini yürütmek için FTD Joiner'ın seri konsoluna aşağıdaki komutu girin.
> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000 16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms 1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms. Done
Seri bağlantı noktasının çıkış yanıtı, OTBR tarafının ping isteğini aldığını ve FTD Joiner'ın OTBR tarafından döndürülen ping yanıtını aldığını gösterir. İki cihaz arasındaki iletişim başarılı olmalıdır.
UDP iletişimi
OpenThread tarafından sağlanan uygulama hizmetleri arasında UDP de bulunur. UDP API'yi kullanarak Thread ağındaki düğümler arasında bilgi aktarabilir veya Border Router aracılığıyla harici ağlara bilgi aktarabilirsiniz. OpenThread'in UDP API'siyle ilgili ayrıntılı giriş, OpenThread CLI - UDP Örneği'nde yer almaktadır. Bu codelab'de, OTBR ile FTD Joiner arasında bilgi iletmek için bu API'lerden bazıları kullanılacaktır.
Öncelikle OTBR'nin Mesh-Local EID'sini alın. Bu adres, Thread cihazının IPv6 adreslerinden biridir ve aynı Thread ağı bölümündeki Thread cihazlarına erişmek için kullanılabilir.
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
OTBR UDP'yi etkinleştirmek ve cihazın 1022 bağlantı noktasını bağlamak için SSH terminaline aşağıdaki komutları girin.
> udp open Done > udp bind :: 1022 Done
Seri konsola aşağıdaki komutları girin ve FTD Joiner'ın UDP'sini etkinleştirin. Cihazın 1022 bağlantı noktasını bağlayın ve ardından OTBR'ye 5 baytlık hello mesajı gönderin.
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
SSH terminali aşağıdaki bilgileri verir. OTBR, FTD Joiner'dan hello mesajını alır. Bu, UDP iletişiminin başarılı olduğu anlamına gelir.
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
8. Tebrikler
Basit bir Thread ağı oluşturup bu ağdaki iletişimi doğruladınız.
Artık şunları biliyorsunuz:
- Telink Zephyr geliştirme ortamını oluşturma ve kullanma
ot-cli-ftdveot-rcpikili dosyalarını oluşturma ve bunları Telink B91 Geliştirme Kartları'na yükleme- Docker kullanarak Raspberry Pi 3B+ veya daha yeni bir sürümü OpenThread Border Router (OTBR) olarak ayarlama
- OTBR'de Thread ağı oluşturma
- Bant dışı devreye alma yoluyla Thread ağına cihaz ekleme
- Thread ağındaki düğümler arasındaki bağlantı nasıl doğrulanır?
Daha fazla bilgi
Aşağıdakiler de dahil olmak üzere çeşitli OpenThread kaynakları hakkında bilgi edinmek için openthread.io ve GitHub'u ziyaret edin:
- Desteklenen Platformlar: OpenThread'i destekleyen tüm platformları keşfedin.
- OpenThread'i derleme: OpenThread'i derleme ve yapılandırma hakkında daha fazla bilgi
- Thread Primer: Bu Codelab'de yer alan tüm Thread kavramlarını kapsar.
Referans belgeler: