1. Giriş
Thread, OpenThread, OTNS ve İpek nedir?
Thread, cihazlar arası ve cihazlar arası güvenli iletişim olanağı sağlayan IP tabanlı düşük güçlü kablosuz örgü ağ protokolüdür. Mesaj dizisi ağları, tek bir hata noktasından kaçınmak için topolojideki değişikliklere uyum sağlayabilir.
Google tarafından yayınlanan OpenThread, Thread'in açık kaynak uygulamasıdır. OpenThread, küçük kod boyutuna ve bellekte yer almasına rağmen İleti Dizisi Özelliği'nde tanımlanan tüm özellikleri desteklemektedir.
OpenThread Ağ Simülasyon Aracı (OTNS) posix platformlarında simüle edilmiş OpenThread düğümleri çalıştırarak Thread ağlarını simüle etmek için kullanılabilir. OTNS, simüle edilmiş Thread ağlarını görselleştirmek ve çalıştırmak için kullanımı kolay bir web arayüzü (OTNS-Web) sunar.
Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için kullanılan tam otomatik bir test platformudur.
Neler öğreneceksiniz?
- OpenThread'in işlev doğrulama çerçevesi: İpek
- OTNS özelliği etkinleştirilmiş gerçek cihazlar için OpenThread oluşturma
- İpek test durumlarıyla oluşturulan Thread ağının durumunu izlemek için OTNS-Web arayüzünü kullanın
Bu codelab'de, OTNS ile İpek kullanımına odaklanılmıştır. İpek ve OTNS'nin diğer özellikleri kapsamaz.
Gerekenler
Donanım:
- 6 İskandinav yarı iletkenli nRF52840 geliştirme kartı
- Kartları bağlamak için 6 adet USB-mikro USB kablosu
- USB çoğaltıcı
Yazılım:
- Linux x86_64.
- Git.
- 1.11 ve sonraki sürümler.
- Web tarayıcısı. OTNS-Web, simülasyonları görüntülemek için bir web tarayıcısı kullanır.
Ön koşullar:
2. Ön koşullar
Önceki temel Codelab uygulamalarını tamamlayın
- Thread Primer: Bu Codelab'de neler öğretildiğini anlamak için Thread ile ilgili temel kavramları bilmeniz gerekir.
- nRF52840 Jamboard'lar ve OpenThread ile bir Thread ağı oluşturun. Bu Codelab'de bir Thread ağını başarıyla oluşturduğunuz varsayılmaktadır.
- OTNS kullanarak mesaj dizisi ağlarını simüle edin. Bu Codelab'de OTNS aracını başarıyla çalıştırdığınız varsayılmaktadır.
Paket ön koşullarını kontrol etme
Tüm ön koşulların sağlandığından emin olalım.
otns
yürütülebilir dosyasının$PATH
içinde aranabilir olup olmadığını kontrol etmek içinwhich otns
komutunu çalıştırın.wpantund
eklentisinin kullanılabilir olduğundan emin olmak içinwhich wpantund
uygulamasını çalıştırın.- ARM GNU araç zinciri, J-Link ve
nrfjprog
paketlerinin tümünün kullanılabilir olduğundan emin olun.
Not: Kurulum için lütfen ilgili dokümanları inceleyin. 1. ön koşul, OTNS kullanarak mesaj dizisi ağlarını simüle etme, diğerleri ise nRF52840 panolar ve OpenThread ile bir Thread ağı oluşturma kaynaklıdır.
3. İpek yapımı
Silk'i klonlamak ve ortamı ayarlamak için kaynak dizininizin altında aşağıdaki komutları çalıştırın:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Donanım yapılandırma dosyasını tanımlayın
Silk'in makinenize bağlı kullanılabilir test donanımı kaynaklarını toplamasına izin vermek için aşağıdaki biçimde bir hwconfig.ini
dosyası tanımlayın:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Arayüz olarak seri numarası ve USB arayüz numarasını bulmak için kullanılabilecek İpek kapsamında usbinfo
adlı bir araç yüklü. DutSerial, çip üzerine basılan veya J-Link ürünleri için usbinfo
tarafından gösterilen SN numarasıdır.
[DEFAULT]
bölümündeki LayoutCenter
ve LayoutRadius
alanları, cihazlar web kullanıcı arayüzünde görselleştirildiğinde düzenin şeklini tanımlar. Bunları burada sunulan değerlere ayarlamak, iyi bir başlangıç noktası olabilir.
Daha sonra, her test cihazı için bir bölüm tanımlar ve ilgili donanım bilgilerini sağlar.
4. OTNS etkinken OpenThread derleme
Bina resmi ve yanıp sönme
Varsayılan olarak OpenThread cihazlar, OTNS ile ilgili mesajlar yayar. Dev panolarının OTNS görselleştirme için gerekli olan arayüz arayüzlerine durum mesajları iletmesine izin vermek üzere bir FTD görüntüsü oluşturmak ve onaltılık biçime dönüştürmek için aşağıdaki komutu OpenThread kaynak dizininin altında çalıştırın.
$ 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
Jamboard'ları flashlamak için Thread Thread network Codelab'in 4. adımındaki talimatları uygulayarak nrfjprog
kullanın. Ardından, tüm kartları nRF USB bağlantı noktası üzerinden ana makineye bağlayın. Aynı USB - Mikro USB kabloları setinin J-bağlantı noktalarından kesilebilir ve nRF52840 geliştirme kartlarının nRF USB bağlantı noktalarına bağlanabilirsiniz. Böylece, yalnızca bu 6 kabloyla test yürütme işlemi yapılabilir. Karmaşadan kaçınmak için 12 kablo kullanın ve her iki bağlantı noktasına bağlayın.
5. OTNS sunucusunu gerçek modla çalıştırma
OTNS'i varsayılan parametrelerle çalıştırmak kullanıcının Thread ağını simüle etmesine olanak tanır. Gerçek bir fiziksel ağ için bir görselleştirme aracı olarak kullanmak isterseniz bu aracı aşağıdakilerle çalıştırın:
otns -raw -real -ot-cli otns-silk-proxy
Bu bağımsız değişkenler, OTNS'ye, ağı simüle etmek için birden fazla ot-cli
işlemi çalıştırmak yerine Thread ağının nasıl görselleştirilmesi gerektiğini açıklayan gRPC ve UDP mesajlarını beklemesini bildirir. Tarayıcınız, görselleştirme sayfasını boş bir tuvalle otomatik olarak açmalıdır.
6. OTNS desteğiyle İpek test alanlarını çalıştırma
Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için tam otomatik bir test platformudur. README projesindeki talimatlar, projenin nasıl kullanılacağını açıklar.
silk/unit_tests
konumundaki silk_run_test.py
dosyası size hızlı bir başlangıç sağlar. Silk, test durumu çalıştırırken OTNS desteği sağlar. OTNS gerçek mod hizmeti zaten yerel olarak çalıştığından, çıkış dosyasını, giriş test komut dosyalarını ve hwconfig.ini
dosyasını eklemek için silk_run_test.py
dosyasını istenen konumlarla değiştirmemiz yeterlidir. -s localhost
bağımsız değişkeni, Silk'e localhost
cihazına OTNS mesajları göndermesini söyler.
Örneğin, bir silk_run_test.py
dosyası için aşağıdaki değişiklikleri kullanarak ot_test_form_network.py
adlı testi çalıştırabilirsiniz. /opt/openthread_test/
, Silk'in günlük çıkışı ve yapılandırma dosyası için kullandığı varsayılan yoldur ancak dilediğiniz yolu kullanabilirsiniz.
silk_kaç_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)
Oluşturulan ağın topolojisi, OTNS web kullanıcı arayüzünde gösterilir.
Sol üst köşede görselleştirme istatistikleri, OT sürümü ve test başlığı gösterilmektedir. Sol alt köşede, sağ tarafta gösterilen günlük penceresi denetimleri bulunur. Başlangıçta düğümler eklenir, ancak ağ oluşturulmaz. Test ilerledikçe her düğüm için modlar ve roller değişir, bağlantılar oluşturulur.
7. Tebrikler
Tebrikler, fiziksel Thread cihazlarında başarıyla bir İpek testi gerçekleştirdiniz ve OTNS kullanarak bu testi görselleştirdiniz.
OTNS destekli donanım yazılımlarıyla yanıp sönen geliştirme oyunlarını kullanarak bir ipek testi yürüttünüz. Jamboard'lar, tüm durumları izleyip toplayan ve diğer test bilgileriyle birlikte OTNS hizmetine gönderen bir ipek sunucusuna durumunu bildirir. Gerçek modda çalışan OTNS, web arayüzünde Thread ağını görselleştirir.
Sonraki adım
İpek paketindeki diğer OpenThread test durumlarını çalıştırmayı deneyin.
Daha fazla bilgi
Çeşitli OpenThread kaynakları için openthread.io ve Silk'e göz atın.