Bir İleti Dizisini Görselleştirme ile Test Etme

1. Giriş

5abd22afa2f2ee9a.png

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

Paket ön koşullarını kontrol etme

Tüm ön koşulların sağlandığından emin olalım.

  1. otns yürütülebilir dosyasının $PATH içinde aranabilir olup olmadığını kontrol etmek için which otns komutunu çalıştırın.
  2. wpantund eklentisinin kullanılabilir olduğundan emin olmak için which wpantund uygulamasını çalıştırın.
  3. 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.

4dd5b41bf7e71334.png

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.

ee443b66e0a6620b.png

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.

5c38e2c72519e620.png

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.

Referans dokümanlar