1) Einführung
Was sind Thread, OpenThread, OTNS und Silk?
Thread ist ein IP-basiertes drahtloses Mesh-Netzwerkprotokoll mit geringem Stromverbrauch, das eine sichere Kommunikation zwischen Geräten und Clouds ermöglicht. Thread-Netzwerke können sich an Topologieänderungen anpassen, um Single Point of Failure zu vermeiden.
OpenThread von Google ist eine Open-Source-Implementierung von Thread. Trotz seiner geringen Codegröße und Arbeitsspeichergröße unterstützt OpenThread alle in der Thread-Spezifikation definierten Funktionen.
Mit dem OpenThread Network Simulator (OTNS) können Thread-Netzwerke simuliert werden, indem simulierte OpenThread-Knoten auf POSIX-Plattformen ausgeführt werden. OTNS bietet eine nutzerfreundliche Weboberfläche (OTNS-Web) zum Visualisieren und Betreiben simulierter Thread-Netzwerke.
Silk ist eine vollständig automatisierte Testplattform zur Validierung von OpenThread-Funktion, -Funktion und -Systemleistung mit echten Geräten.
Lerninhalte
- Framework zur Funktionsüberprüfung von OpenThread: Seide
- OpenThread für echte Geräte mit aktivierter OTNS-Funktion erstellen
- Mit der OTNS-Web-Oberfläche den Status des Thread-Netzwerks überwachen, das durch das Ausführen von Silk-Testläufen gebildet wurde
In diesem Codelab wird die Verwendung von Silk mit OTNS behandelt. Andere Funktionen von Seide und OTNS sind nicht abgedeckt.
Voraussetzungen
Hardware:
- 6 Nordic Semiconductor nRF52840 Entwicklungsplatten
- 6 USB-auf-Micro-USB-Kabel zum Verbinden der Boards
- USB-Hub
Software:
- Linux x86_64.
- Git:
- Go 1.11+.
- Web browser. OTNS-Web verwendet einen Webbrowser zur Anzeige von Simulationen.
Voraussetzungen:
2. Voraussetzungen
Frühere grundlegende Codelabs abschließen
- Thread-Primer Sie müssen die grundlegenden Konzepte von Thread verstehen und verstehen, was in diesem Codelab gelehrt wird.
- Thread-Netzwerk mit nRF52840-Boards und OpenThread erstellen Bei diesem Codelab wird davon ausgegangen, dass du ein Thread-Netzwerk erfolgreich erstellt hast.
- Thread-Netzwerke mit OTNS simulieren. Bei diesem Codelab wird davon ausgegangen, dass Sie das OTNS-Tool erfolgreich ausgeführt haben.
Paketvoraussetzungen prüfen
Prüfen Sie, ob alle Voraussetzungen erfüllt sind.
- Führen Sie
which otns
aus, um zu prüfen, ob die ausführbare Dateiotns
in$PATH
suchbar ist. - Führen Sie
which wpantund
aus, um sicherzustellen, dasswpantund
verfügbar ist. - Achten Sie darauf, dass alle ARM GNU-Toolchains, J-Link- und
nrfjprog
-Pakete verfügbar sind.
Hinweis:Informationen zum Einrichten finden Sie in den verlinkten Dokumenten. Voraussetzung 1 ist von Simulate Thread Networks with OTNS (Andere Netzwerke mit OTNS simulieren) und andere nutzen Threads mit nRF52840-Boards und OpenThread.
3. Seideneinrichtung
Führen Sie die folgenden Befehle unter dem Quellverzeichnis aus, um Silk zu klonen und die Umgebung einzurichten:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Datei für die Hardwarekonfiguration definieren
Definieren Sie eine hwconfig.ini
-Datei im folgenden Format, damit Silk die verfügbaren Testhardware, die mit Ihrem Computer verbunden ist, erfassen kann:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Als Teil von Silk ist ein Tool mit dem Namen usbinfo
installiert, mit dem die Seriennummer der USB-Schnittstelle und die Nummer der USB-Schnittstelle ermittelt werden können. DutSerial ist die SN-Nummer, die auf dem Chip aufgedruckt oder von usbinfo
für J-Link-Produkte angezeigt wird.
Die Felder LayoutCenter
und LayoutRadius
im Abschnitt [DEFAULT]
definieren die Form des Layouts, wenn die Geräte auf der Weboberfläche visualisiert werden. Sie können die hier angegebenen Werte als Ausgangspunkt verwenden.
Danach wird für jedes Testgerät ein Abschnitt definiert und die relevanten Hardwareinformationen bereitgestellt.
4. OpenThread mit aktiviertem OTNS kompilieren
Gebäudebild und blinkende Bilder
Standardmäßig geben OpenThread-Geräte keine OTNS-bezogenen Nachrichten aus. Führen Sie den folgenden Befehl unter dem OpenThread-Quellverzeichnis aus, um ein FTD-Image zu erstellen und in das Hexadezimalformat zu konvertieren, damit die Entwicklungsboards Statusmeldungen an die Schnittstellen senden können, die für die OTNS-Visualisierung erforderlich sind.
$ 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
Wenn Sie die Boards freischalten möchten, folgen Sie der Anleitung in Schritt 4 des Codelabs zum Thread-Netzwerk erstellen, um nrfjprog
zu verwenden. Verbinden Sie danach alle Boards über den nRF-USB-Port mit dem Hostcomputer. Die gleichen USB-zu-Micro-USB-Kabel können von den J-Link-Ports getrennt und an die nRF-USB-Ports der nRF52840-Entwicklungsplatinen angeschlossen werden. Aus diesem Grund können nur diese 6 Kabel getestet werden. Um Ärger zu vermeiden, verwenden Sie 12 Kabel und verbinden Sie beide Ports.
5. OTNS-Server mit echtem Modus ausführen
Wenn OTNS mit Standardparametern ausgeführt wird, kann der Nutzer ein Thread-Netzwerk simulieren. Um das Tool zur Visualisierung für ein tatsächliches physisches Netzwerk zu verwenden, führen Sie es aus:
otns -raw -real -ot-cli otns-silk-proxy
Diese Argumente weisen OTNS darauf an, gRPC- und UDP-Nachrichten zu erwarten, die beschreiben, wie das Thread-Netzwerk visualisiert werden soll, anstatt mehrere ot-cli
-Prozesse zur Simulation des Netzwerks auszuführen. Ihr Browser sollte die Visualisierungsseite automatisch mit einem leeren Canvas öffnen.
6. Seiden-Testläufe mit OTNS-Unterstützung
Silk ist eine vollautomatische Testplattform zur Validierung von OpenThread-Funktion, -Funktion und -Systemleistung mit echten Geräten. In der Anleitung im Projekt README finden Sie Informationen zur Verwendung.
Die Datei silk_run_test.py
unter silk/unit_tests
bietet Ihnen einen Vorsprung. Silk bietet OTNS-Unterstützung beim Ausführen eines Testlaufs. Da der OTNS-Echtzeitmodus bereits lokal ausgeführt wird, müssen wir einfach die Datei silk_run_test.py
mit den gewünschten Speicherorten für eine Ausgabeprotokolldatei, Eingabetestskripts und eine hwconfig.ini
-Datei ändern. Das Argument -s localhost
weist Silk an, OTNS-Nachrichten an localhost
zu senden.
Sie können beispielsweise den Test ot_test_form_network.py
mit den folgenden Änderungen an der Datei silk_run_test.py
ausführen. /opt/openthread_test/
ist der Standardpfad, den Silk für die Logausgabe und die Konfigurationsdatei verwendet. Sie können aber auch einen beliebigen Pfad verwenden.
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)
Die Topologievisualisierung des gebildeten Netzwerks wird auf der OTNS-Web-UI angezeigt.
Links oben werden Statistik, OT-Version und Testtitel angezeigt. Links unten befinden sich Steuerelemente für das Protokollfenster, die rechts angezeigt werden. Anfangs werden Knoten hinzugefügt, es wird jedoch kein Netzwerk gebildet. Im Verlauf des Tests ändern sich die Modi und Rollen der einzelnen Knoten. Anschließend werden die Links gebildet.
7. Glückwunsch
Glückwunsch, Sie haben einen Seidentest auf physischen Thread-Geräten erfolgreich ausgeführt und ihn mit OTNS visualisiert.
Sie haben einen Silk-Test mit Entwicklungsplatinen durchgeführt, die mit Firmwareen mit OTNS-Unterstützung ausgestattet sind. Die Boards melden ihren Status an einen Seidenserver, der alle überwacht und aggregiert und sie zusammen mit anderen Testinformationen an den OTNS-Dienst sendet. Mit OTNS im Realmodus wird das Thread-Netzwerk auf der Weboberfläche visualisiert.
Nächste Schritte
Führen Sie andere OpenThread-Testläufe aus, die im Seidenpaket enthalten sind.
Weitere Informationen
Unter openthread.io und Silk finden Sie eine Vielzahl von OpenThread-Ressourcen.