1. Introduzione
Che cosa sono Thread, OpenThread, OTNS e Silk?
Thread è un protocollo di rete mesh wireless a basso consumo basato su IP che consente comunicazioni sicure tra dispositivi e cloud. Le reti Thread possono adattarsi alle modifiche della topologia per evitare il single point of failure.
OpenThread rilasciato da Google è un'implementazione open source di Thread. Nonostante le dimensioni ridotte del codice e l'ingombro della memoria, OpenThread supporta tutte le funzionalità definite nella specifica Thread.
È possibile utilizzare OpenThread Network Simulator (OTNS) per simulare reti Thread eseguendo nodi OpenThread simulati sulle piattaforme posix. OTNS fornisce un'interfaccia web (OTNS-web) di facile utilizzo per visualizzare e utilizzare le reti Thread simulate.
Silk è una piattaforma di test completamente automatizzata per convalidare le prestazioni di funzioni, funzionalità e sistema di OpenThread con dispositivi reali.
Obiettivi didattici
- Framework di verifica della funzionalità di OpenThread: Silk
- Crea OpenThread per dispositivi reali con la funzionalità OTNS abilitata
- Utilizza l'interfaccia web OTNS per monitorare lo stato della rete Thread creata eseguendo scenari di test Silk
Questo codelab è incentrato sull'utilizzo di Silk con OTNS. Le altre funzionalità di Silk e OTNS non sono descritte.
Che cosa ti serve
Hardware:
- 6 schede di sviluppo nRF52840 di Nordic Semiconductor
- 6 cavi da USB a micro-USB per collegare le schede
- hub USB
Software:
- Linux x86_64.
- Git.
- Go 1.11 e versioni successive.
- Browser web. OTNS-Web utilizza un browser web per la visualizzazione delle simulazioni.
Prerequisiti:
2. Prerequisiti
Completare i codelab di base precedenti
- Thread Primer. Per capire cosa viene insegnato in questo codelab, devi conoscere i concetti di base di Thread.
- Crea una rete Thread con schede nRF52840 e OpenThread. Questo codelab presuppone che tu abbia creato correttamente una rete Thread.
- Simulare reti Thread utilizzando OTNS. Questo codelab presuppone che tu abbia eseguito correttamente lo strumento OTNS.
Controllo dei prerequisiti del pacchetto in corso...
Assicuriamoci che tutti i prerequisiti siano soddisfatti.
- Esegui
which otns
per verificare se l'eseguibileotns
è disponibile per la ricerca in$PATH
. - Esegui
which wpantund
per assicurarti chewpantund
sia disponibile. - Assicurati che la toolchain ARM GNU, J-Link e i pacchetti
nrfjprog
siano tutti disponibili.
Nota:per indicazioni sulla configurazione, consulta la documentazione collegata. Il prerequisito 1 proviene da Simulare reti Thread utilizzando OTNS, mentre altri riguardano Build a Thread network with nRF52840 boards and OpenThread.
3. Configurazione Silk
Per clonare Silk e configurare l'ambiente, esegui questi comandi nella directory di origine:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Definisci file di configurazione hardware
Per consentire a Silk di raccogliere le risorse hardware di test disponibili connesse alla tua macchina, definisci un file hwconfig.ini
nel seguente formato:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
All'interno di Silk è installato uno strumento chiamato usbinfo
, che può essere utilizzato per trovare il numero di serie dell'interfaccia e il numero di interfaccia USB. DutSerial è il numero SN stampato sul chip o visualizzato da usbinfo
per i prodotti J-Link.
I campi LayoutCenter
e LayoutRadius
nella sezione [DEFAULT]
definiscono la forma del layout quando i dispositivi vengono visualizzati nella UI web. Impostarli sui valori qui presentati può essere un buon punto di partenza.
Successivamente, definisce una sezione per ogni dispositivo di test e fornisce le informazioni hardware pertinenti.
4. Compilazione di OpenThread con OTNS abilitati
Creazione di immagini e flash
Per impostazione predefinita, i dispositivi OpenThread non emettono messaggi relativi a OTNS. Per consentire alle schede di sviluppo di emettere messaggi di stato nelle interfacce di log essenziali per la visualizzazione OTNS, eseguire il comando seguente nella directory di origine OpenThread per creare un'immagine FTD e convertirla in formato esadecimale.
$ 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
Per eseguire il flashing delle bacheche, segui le istruzioni nel passaggio 4 del codelab sulla creazione di una rete Thread per usare nrfjprog
. Dopodiché, collega tutte le schede tramite la porta USB nRF alla macchina host. Lo stesso set di cavi da USB a Micro-USB può essere scollegato dalle porte J-Link e collegato alle porte USB nRF delle schede dev nRF52840. Pertanto, con solo questi 6 cavi è possibile eseguire il test. Per evitare problemi, usa 12 cavi e collegali a entrambe le porte.
5. Esecuzione del server OTNS in modalità reale
L'esecuzione di OTNS con parametri predefiniti consente all'utente di simulare una rete Thread. Per utilizzarlo come strumento di visualizzazione per una rete fisica reale, eseguilo con:
otns -raw -real -ot-cli otns-silk-proxy
Questi argomenti indicano a OTNS di aspettarsi messaggi gRPC e UDP che descrivono come deve essere visualizzata la rete Thread, invece di eseguire più processi ot-cli
per simulare la rete. Il browser dovrebbe aprire automaticamente la pagina di visualizzazione con un canvas vuoto.
6. Esecuzione di scenari di test Silk con supporto OTNS
Silk è una piattaforma di test completamente automatizzata per convalidare le prestazioni delle funzioni, delle caratteristiche e del sistema di OpenThread con dispositivi reali. Le istruzioni nel progetto README spiegano come utilizzarlo.
Il file silk_run_test.py
che si trova all'indirizzo silk/unit_tests
è un ottimo punto di partenza. Silk fornisce supporto OTNS durante l'esecuzione di uno scenario di test. Poiché il servizio in modalità reale OTNS è già in esecuzione localmente, è sufficiente modificare il file silk_run_test.py
con le posizioni desiderate per un file di log di output, script di test di input e file hwconfig.ini
. L'argomento -s localhost
indica a Silk di inviare messaggi OTNS a localhost
.
Ad esempio, è possibile eseguire il test denominato ot_test_form_network.py
utilizzando le seguenti modifiche al file silk_run_test.py
. /opt/openthread_test/
è il percorso predefinito utilizzato da Silk per l'output del log e il file di configurazione, ma puoi utilizzare qualsiasi percorso.
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)
La visualizzazione della topologia della rete creata verrà mostrata nell'interfaccia utente web di OTNS.
L'angolo in alto a sinistra mostra le statistiche di visualizzazione, la versione OT e il titolo del test. Nell'angolo in basso a sinistra sono presenti i controlli della finestra del log, visualizzata a destra. Inizialmente vengono aggiunti i nodi, ma non viene creata alcuna rete. Man mano che il test procede, le modalità e i ruoli di ciascun nodo cambiano e i collegamenti vengono creati.
7. Complimenti
Congratulazioni, hai eseguito correttamente un test Silk su dispositivi Thread fisici e lo hai visualizzato utilizzando OTNS.
Hai eseguito un test Silk usando schede di sviluppo con firmware che supportano OTNS. I board comunicano il loro stato a un server Silk, che li monitora e li aggrega e li invia al servizio OTNS insieme ad altre informazioni relative al test. OTNS in esecuzione in modalità reale mostra la rete Thread sull'interfaccia web.
Passaggi successivi
Prova a eseguire altri scenari di test OpenThread inclusi nel pacchetto Silk.
Per approfondire
Dai un'occhiata a openthread.io e Silk per trovare una serie di risorse OpenThread.