1. Introducción
¿Qué son Thread, OpenThread, OTNS y Silk?
Thread es un protocolo de red en malla inalámbrica de bajo consumo basado en IP que permite comunicaciones seguras entre dispositivos y entre dispositivos. Las redes de Thread pueden adaptarse a los cambios de topología para evitar puntos únicos de fallo.
Lanzada por Google OpenThread es una implementación de código abierto de Thread. A pesar de su pequeño tamaño de código y uso de memoria, OpenThread admite todas las funciones que se definen en la Especificación de subprocesos.
El simulador de red OpenThread (OTNS) se puede usar para simular redes Thread mediante la ejecución de nodos de OpenThread simulados en plataformas posix. OTNS proporciona una interfaz web (OTNS-Web) fácil de usar para visualizar y operar redes Thread simuladas.
Silk es una plataforma de prueba completamente automatizada para validar la función, las características y el rendimiento del sistema de OpenThread con dispositivos reales.
Qué aprenderás
- Framework de verificación de funcionalidad de OpenThread: Silk
- Compila OpenThread para dispositivos reales con la función OTNS habilitada
- Usa la interfaz OTNS-Web para supervisar el estado de la red Thread que se forma a partir de la ejecución de casos de prueba de Silk
Este codelab se enfoca en el uso de Silk con OTNS. No se incluyen otras funciones de Silk y OTNS.
Requisitos
Hardware:
- 6 placas de desarrollo Nordic Semiconductor nRF52840
- 6 cables USB a micro USB para conectar las placas
- hub USB
Software:
Requisitos previos:
2. Requisitos previos
Completar codelabs básicos anteriores
- Primer para hilos. Deberás conocer los conceptos básicos de Thread para comprender lo que se enseña en este Codelab.
- Compila una red Thread con placas nRF52840 y OpenThread. En este codelab, se supone que compilaste correctamente una red Thread.
- Simula redes de Thread con OTNS. En este codelab, se supone que ejecutaste correctamente la herramienta OTNS.
Verifica los requisitos previos del paquete
Asegurémonos de que se cumplan todos los requisitos previos.
- Ejecuta
which otns
para verificar si el ejecutableotns
se puede buscar en$PATH
. - Ejecuta
which wpantund
para asegurarte de quewpantund
esté disponible. - Asegúrate de que estén disponibles todos los paquetes de la cadena de herramientas ARM GNU, J-Link y
nrfjprog
.
Nota: Consulta la documentación vinculada para obtener orientación sobre la configuración. El requisito 1 es de Simular redes de Thread con OTNS, y otros corresponden a Cómo compilar una red Thread con placas nRF52840 y OpenThread.
3. Instalación de seda
Para clonar Silk y configurar el entorno, ejecuta los siguientes comandos en el directorio del código fuente:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Define el archivo de configuración de hardware
Para permitir que Silk recopile los recursos de hardware de prueba disponibles conectados a tu máquina, define un archivo hwconfig.ini
con el siguiente formato:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Como parte de Silk, se instala una herramienta llamada usbinfo
, que se puede usar para averiguar el número de serie de la interfaz y el número de interfaz USB. DutSerial es el número de SN impreso en el chip o que muestra usbinfo
para los productos J-Link.
Los campos LayoutCenter
y LayoutRadius
de la sección [DEFAULT]
definen la forma del diseño cuando se visualizan los dispositivos en la IU web. Establecerlos en los valores que se presentan aquí puede ser un buen punto de partida.
A continuación, define una sección para cada dispositivo de prueba y proporciona la información de hardware relevante.
4. Cómo compilar OpenThread con OTNS habilitado
Compila la imagen y escribe en la memoria flash
De forma predeterminada, los dispositivos OpenThread no emiten mensajes relacionados con OTNS. Para permitir que las placas de desarrollo emitan mensajes de estado a interfaces de registro que son esenciales para la visualización de OTNS, ejecuta el siguiente comando en el directorio del código fuente de OpenThread para compilar una imagen FTD y convertirla al formato hexadecimal.
$ 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
Para escribir las placas en la memoria flash, sigue las instrucciones del paso 4 del codelab Cómo compilar una red de Thread para usar nrfjprog
. Luego, conecta todas las placas a través del puerto USB de nRF a la máquina anfitrión. El mismo conjunto de cables USB a micro USB se puede desconectar de los puertos J-Link y conectarse a los puertos USB nRF de las placas de desarrollo nRF52840. De este modo, se puede realizar una ejecución de prueba con solo estos 6 cables. Para evitar complicaciones, usa 12 cables y conéctalos a ambos puertos.
5. Ejecuta un servidor OTNS con modo real
La ejecución de OTNS con parámetros predeterminados permite al usuario simular una red Thread. Si quieres usarla como herramienta de visualización para una red física real, ejecútala con el siguiente comando:
otns -raw -real -ot-cli otns-silk-proxy
Estos argumentos le indican a OTNS que espere mensajes gRPC y UDP que describen cómo se debe visualizar la red de Thread, en lugar de ejecutar varios procesos ot-cli
para simular la red. Tu navegador debería abrir automáticamente la página de visualización con un lienzo vacío.
6. Ejecuta casos de prueba de Silk compatibles con OTNS
Silk es una plataforma de prueba completamente automatizada para validar la función, las características y el rendimiento del sistema de OpenThread con dispositivos reales. En las instrucciones del archivo README del proyecto, se explica cómo usarlo.
El archivo silk_run_test.py
ubicado en silk/unit_tests
te proporciona una ventaja. Silk proporciona compatibilidad con OTNS cuando ejecuta un caso de prueba. Dado que el servicio de modo real de OTNS ya se ejecuta localmente, solo necesitamos modificar el archivo silk_run_test.py
con las ubicaciones deseadas para un archivo de registro de salida, secuencias de comandos de prueba de entrada y un archivo hwconfig.ini
. El argumento -s localhost
le indica a Silk que envíe mensajes OTNS a localhost
.
Por ejemplo, se puede ejecutar la prueba llamada ot_test_form_network.py
mediante las siguientes modificaciones en el archivo silk_run_test.py
. /opt/openthread_test/
es la ruta predeterminada que usa Silk para los resultados del registro y el archivo de configuración, pero puedes usar cualquier ruta.
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 visualización de la topología de la red formada se mostrará en la IU web de OTNS.
La esquina superior izquierda muestra las estadísticas de visualización, la versión OT y el título de la prueba. En la esquina inferior izquierda, se encuentran los controles de la ventana de registro, que se muestra a la derecha. Inicialmente, se agregan nodos, pero no se forma ninguna red. A medida que avanza la prueba, los modos y las funciones de cada nodo cambian, y se forman los vínculos.
7. Felicitaciones
¡Felicitaciones! Realizaste correctamente una prueba de Silk en dispositivos Thread físicos y la visualizaste con OTNS.
Ejecutaste una prueba Silk con placas de desarrollo actualizadas con firmwares compatibles con OTNS. Las placas informan su estado a un servidor Silk, que los supervisa y agrega a todos, y los envía al servicio OTNS junto con otra información de prueba. Las OTNS que se ejecutan en modo real visualizan la red Thread en la interfaz web.
Próximos pasos
Intenta ejecutar otros casos de prueba de OpenThread incluidos en el paquete de Silk.
Lecturas adicionales
Consulta openthread.io y Silk para obtener varios recursos de OpenThread.