1. Introdução
O que é Thread, OpenThread, OTNS e Silk?
O Thread é um protocolo de rede mesh sem fio de baixo consumo e baseado em IP que permite a comunicação segura entre dispositivos e na nuvem. As redes de linhas de execução podem se adaptar às mudanças de topologia para evitar pontos únicos de falha.
O OpenThread lançado pelo Google é uma implementação de código aberto do Thread. Apesar do tamanho reduzido do código e da memória, o OpenThread é compatível com todos os recursos definidos na Especificação do Thread.
O simulador de rede do OpenThread (OTNS, na sigla em inglês) pode ser usado para simular redes do Thread executando nós simulados do OpenThread em plataformas posix. O OTNS oferece uma interface da Web fácil de usar (OTNS-Web) para visualizar e operar redes Thread simuladas.
O Silk é uma plataforma de testes totalmente automatizada para validar funções, recursos e desempenho do sistema OpenThread com dispositivos reais.
O que você vai aprender
- Framework de verificação de funcionalidade do OpenThread: seda
- Criar o OpenThread para dispositivos reais com o recurso de OTNS ativado
- Use a interface OTNS da Web para monitorar o status da rede Thread formada pela execução de casos de teste de seda
O foco deste codelab é o uso da seda com OTNS. Outros recursos de seda e OTNS não são cobertos.
Pré-requisitos
Hardware:
- 6 placas de desenvolvedor Nordic Semiconductor nRF52840
- Seis cabos USB para micro USB para conectar as placas
- hub USB
Software:
- Linux x86_64
- Git (em inglês).
- Go 1.11+
- Navegador da Web. O OTNS-Web usa um navegador da Web para exibir simulações.
Pré-requisitos:
2. Pré-requisitos
Concluir os codelabs básicos anteriores
- Guia de linhas de execução. Você precisa conhecer os conceitos básicos do Thread para entender o que é ensinado neste codelab.
- Crie uma rede Thread com placas nRF52840 e OpenThread. Este codelab pressupõe que você criou uma rede Thread.
- Simular redes Thread usando OTNS. Este codelab considera que você executou a ferramenta OTNS.
Como verificar os pré-requisitos do pacote
Verifique se todos os pré-requisitos foram atendidos.
- Execute
which otns
para verificar se o executávelotns
é pesquisável em$PATH
. - Execute
which wpantund
para garantir quewpantund
esteja disponível. - Verifique se os conjuntos de ferramentas ARM GNU, J-Link e
nrfjprog
estão disponíveis.
Observação: consulte as documentações vinculadas para orientações de configuração. O pré-requisito no 1 é Simular redes Thread usando OTNS e outros são Criar uma rede Thread com placas nRF52840 e OpenThread.
3. Configuração da seda
Para clonar a seda e configurar o ambiente, execute os seguintes comandos no diretório de origem:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Definir arquivo de configuração de hardware
Para permitir que a Silk colete os recursos de hardware de teste disponíveis conectados à máquina, defina um arquivo hwconfig.ini
no seguinte formato:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Uma ferramenta chamada usbinfo
está instalada como parte da Silk, que pode ser usada para descobrir o número de série da interface e o número da interface USB. DutSerial é o número do SN impresso no chip ou exibido pelo usbinfo
para produtos do J-Link.
Os campos LayoutCenter
e LayoutRadius
na seção [DEFAULT]
definem a forma do layout quando os dispositivos são visualizados na IU da Web. Definir esses valores para os valores apresentados aqui pode ser um bom ponto de partida.
Em seguida, ele define uma seção para cada dispositivo de teste e fornece as informações de hardware relevantes.
4. Compilar OpenThread com OTNS ativado
Como criar e atualizar imagens
Por padrão, os dispositivos OpenThread não emitem mensagens relacionadas a OTNS. Para permitir que os painéis dev emitem mensagens de status para interfaces de registro essenciais para a visualização OTNS, execute o seguinte comando no diretório de origem do OpenThread para criar uma imagem FTD e convertê-la para o 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 atualizar as placas, siga as instruções da etapa 4 do Codelab de como criar uma rede Thread para usar nrfjprog
. Depois disso, conecte todas as placas pela porta USB nRF à máquina host. O mesmo conjunto de cabos USB para micro USB pode ser desconectado das portas J-Link e conectado às portas nRF USB das placas de desenvolvimento nRF52840. Assim, com apenas esses seis cabos, a execução do teste pode ser realizada. Para evitar problemas, use 12 cabos e conecte as duas portas.
5. Como executar o servidor OTNS com o modo real
Executar o OTNS com parâmetros padrão permite que o usuário simule uma rede Thread. Para usá-lo como uma ferramenta de visualização em uma rede física real, execute-o com:
otns -raw -real -ot-cli otns-silk-proxy
Esses argumentos informam ao OTNS esperar mensagens gRPC e UDP que descrevem como a rede Thread deve ser visualizada, em vez de executar vários processos ot-cli
para simular a rede. O navegador abrirá automaticamente a página de visualização com uma tela vazia.
6. Como executar casos de teste de seda compatíveis com OTNS
A Silk é uma plataforma de teste totalmente automatizada para validar funções, recursos e o desempenho do sistema OpenThread com dispositivos reais. As instruções no README do projeto abrangem como usá-lo.
O arquivo silk_run_test.py
localizado em silk/unit_tests
oferece uma vantagem. A seda oferece suporte a OTNS ao executar um caso de teste. Como o serviço OTNS em modo real já está em execução localmente, basta modificar o arquivo silk_run_test.py
com os locais desejados para um arquivo de registro de saída, scripts de teste de entrada e arquivo hwconfig.ini
. O argumento -s localhost
diz à Silk para enviar mensagens OTNS para localhost
.
Por exemplo, é possível executar o teste com o nome ot_test_form_network.py
usando as seguintes modificações no arquivo silk_run_test.py
. /opt/openthread_test/
é o caminho padrão que a Silk usa para a saída de registro e o arquivo de configuração, mas é possível usar qualquer caminho.
silk_run_test.py (em inglês)
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)
A visualização da topologia da rede formada será exibida na IU da Web do OTNS.
O canto superior esquerdo mostra as estatísticas de visualização, a versão do OT e o título do teste. O canto inferior esquerdo tem controles da janela de registro, que é exibida à direita. Inicialmente, os nós são adicionados, mas nenhuma rede é formada. À medida que o teste avança, os modos e papéis de cada nó são alterados e os links são formados.
7. Parabéns
Parabéns! Você executou um teste de seda em dispositivos Thread físicos e o visualizou usando OTNS.
Você executou um teste de seda usando placas de desenvolvimento que são atualizadas com firmwares com suporte a OTNS. Os quadros informam o status para um servidor de seda, que monitora e agrega todos eles, e os envia para o serviço OTNS junto com outras informações de teste. O OTNS em execução no modo real visualiza a rede Thread na interface da Web.
A seguir
Execute outros casos de teste do OpenThread incluídos no pacote Silk.
Leia mais
Confira openthread.io e Silk para conhecer diversos recursos do OpenThread.