Introdução detalhada do método de acesso à rede OTAA do terminal LoRaAN

No artigo anterior, apresentei " como escolher o método de acesso à rede do terminal LoRaWAN ". Este artigo apresenta principalmente como o nó OTAA acessa a rede. Este artigo é da conta pública do WeChat "Xiao Qi disse LoRa", o conteúdo foi autorizado pelo professor Xiao Qi, o professor Xiao Qi é o instrutor do curso online Tencent Cloud, clique no link https://mp.weixin.qq.com / s / WvGmi81zBMzbAX8OUb-DpA Você pode assistir ao vídeo do curso.

O nome completo da OTAA é Over The Air Activation . Suas etapas de acesso à rede são as seguintes: A solicitação de Join Request enviada pelo nó é encaminhada ao servidor por meio do gateway, ou seja, NS; NS fará algum processamento de julgamento sobre a solicitação e, em seguida, enviará a resposta de Aceitação de Join para o nó através do gateway.

A principal função do gateway é encaminhar os dados do nó e os dados do servidor entre si. Servidores Podemos escolher alguns servidores online, como TTN, plataforma de desenvolvimento Tencent Cloud IoT, etc., também podemos construir servidores de código aberto , como chirpstack, e também podemos comprar alguns gateways que têm servidores integrados.

Quer se trate de TTN, plataforma de desenvolvimento Tencent Cloud Internet of Things, chirpstack ou servidor integrado, eles são basicamente de uso gratuito. A plataforma Tencent Cloud Internet of Things foi atualizada para um modelo de carga parcial em janeiro de 2021, e o uso de menos de 1.000 dispositivos é gratuito.

O nó OTAA precisa ter dois processos de interação de dados com o NS para entrar na rede . Uma vez que o nó envia uma solicitação de solicitação de junção para o NS, e uma vez que o NS envia uma resposta de aceitação de junção para o nó. Antes de o nó enviar a solicitação de solicitação de junção, precisamos preparar os três parâmetros DevEUI, AppEUI e AppKey do nó OTAA . Depois que o nó recebe a aceitação de união, o nó precisa analisar com êxito a aceitação de união antes de ser conectado com êxito à rede. A seguir, cada etapa é explicada em detalhes.

Para nós OTAA, como obtemos os três parâmetros de DevEUI, AppEUI e AppKey ? Alguns fabricantes postarão um código QR no nó, e esses três parâmetros podem ser obtidos digitalizando o código QR; alguns fabricantes podem obter esses três parâmetros por meio do comando at, e o comando at específico precisa verificar o manual fornecido pelo fabricante ; Outros fabricantes publicarão apenas devEUI no nó e, em seguida, enviarão devEUI, appEUI e appKey aos clientes de outras maneiras para garantir a segurança dos três parâmetros.

DevEUI é a identidade do nó, assim como o ID de cada um de nós na empresa.

AppEUI é o ID do aplicativo , podemos entender AppEUI como o nome do departamento na empresa. Nos vários servidores NS que mencionamos anteriormente, se você usar o servidor TTN , precisará configurar AppEUI ; se usar a plataforma Tencent Cloud IoT ou chirpstack , o nó de parâmetro para AppEUI pode ser definido com qualquer valor .

A AppKey é usada pelo nó para calcular a chave de sessão. O nó usa a AppKey para calcular a chave de sessão NwkSKey e AppSKey da aceitação de junção para a comunicação após o nó se conectar com sucesso à rede. Este é um processo completo de solicitação de acesso à rede .

O nó envia um pedido de pedido de adesão, que é transmitido de forma transparente para o servidor NS através do gateway. O NS avalia se o pedido é legal. Se for legal, o NS envia uma mensagem de aceitação de junção para o gateway, e o gateway envia a mensagem para o nó. Depois que o nó recebe a aceitação de junção, ele analisa devAddr, appSKey e nwkSKey da aceitação de junção e, em seguida, o nó pode usar os três parâmetros analisados ​​para criptografar os dados e enviá-los para NS.

Usamos um exemplo para ilustrar o formato da mensagem da solicitação de solicitação de junção. Uma solicitação de solicitação de junção contém o parâmetro AppEUI do nó, o parâmetro DevEUI e um parâmetro de valor aleatório chamado DevNonce .

No protocolo LoRaWAN, o primeiro byte é chamado de logotipo Mac Header , ou MHDR abreviadamente, para indicar o tipo de mensagem. 00 sempre significa que esta é uma mensagem de solicitação de adesão. Os 8 bytes do segundo ao nono são preenchidos com AppEUI, do décimo ao décimo sétimo bytes são preenchidos com DevEUI e o décimo oitavo ao décimo nono byte é um valor aleatório DevNonce. Os últimos quatro bytes são o valor de verificação calculado para os dados de AppEUI, DevEUI e DevNonce. Preste atenção ao parâmetro DevNonce. Muitos amigos que estão fazendo desenvolvimento pisaram em um buraco e todos estão relacionados a este DevNonce. Eu irei compartilhar com você mais tarde.

Um formato de mensagem de aceitação de união completo é o seguinte, o primeiro byte é o cabeçalho do protocolo MHDR que acabamos de mencionar e o cabeçalho do protocolo da mensagem de aceitação de união é fixado em hexadecimal 0x20. Em seguida, seguido por AppNonce, que é um número aleatório gerado por NS; NetID é um parâmetro de NS, que pode ser simplesmente entendido como o ID de NS; DevAddr é um endereço curto gerado por NS para o nó. Após o nó, a junção é bem-sucedida , DevAddr torna-se o nó em O identificador exclusivo no NS, não haverá dois DevAddrs idênticos no mesmo NS; DLSettings configura os parâmetros de taxa de recebimento das duas janelas de recebimento do nó; RxDelay configura quanto tempo o nó abrirá após o conclusão do envio de dados Para uma janela de recebimento, este valor é 1 segundo por padrão; CFList é um parâmetro opcional, que pode alterar as informações do canal de comunicação do nó após se conectar com sucesso à rede.

A mensagem de aceitação de junção enviada pelo NS ao nó é uma mensagem criptografada e o nó precisa usar o appKey para descriptografá-la antes de obter a mensagem de texto simples JoinAccept. Em seguida, o nó usa DevNonce, AppKey e appNonce analisados ​​em Join accept para calcular duas chaves de sessão nwkSKey e appSKey.

Já apresentamos uma mensagem interativa completa do processo OTAA. No uso real, é fácil para você encontrar o problema de acesso malsucedido à rede ao entrar em contato com o LoRaWAN pela primeira vez. Existem muitos motivos possíveis para o acesso malsucedido à rede. Os principais motivos são resumidos nos três pontos a seguir:

  • Os três parâmetros do nó registrados no NS não correspondem aos três parâmetros da configuração do nó . Se a configuração de devEUI ou AppEUI estiver inconsistente, o servidor não enviará a mensagem de aceitação de adesão; se a configuração de AppKey for inconsistente, o nó não será capaz de analisar com êxito a mensagem de aceitação de adesão. Essa incompatibilidade se deve principalmente a fatores humanos e geralmente é causada pelo preenchimento incorreto dos parâmetros pelo usuário, o que é relativamente fácil de solucionar.
  • A solicitação de junção enviada pelo nó não é recebida pelo gateway, o que geralmente é causado por falha de hardware ou ambiente que faz com que o sinal sem fio seja particularmente ruim . A probabilidade de falha de hardware é relativamente baixa. Geralmente, é necessário focar em verificar se o sinal sem fio está ruim. Você pode considerar definir a distância entre o nó e o gateway um pouco mais perto ou tentar eliminar os obstáculos entre o nó e o gateway e tente novamente.
  • Há também um motivo raro extremamente difícil de solucionar. Muitos desenvolvedores podem escrever todos os parâmetros na solicitação de junção no código no início do estágio de aprendizagem , e o Devnonce é definido com um valor fixo no código. Esta abordagem fará com que a primeira junção seja bem-sucedida e, em seguida, junte-se novamente e nunca ter sucesso. Este é um poço desenhado pelo Devnonce que mencionamos anteriormente.

O NS terá um mecanismo de cache que salvará o Devnonce em cada mensagem de solicitação de Join do mesmo nó. Dentro de um determinado período de tempo, se o Devnonce na mensagem de solicitação de acesso à rede do mesmo nó for igual ao Devnonce no cache NS, então NS rejeitará o terminal desta solicitação de acesso à rede. NS faz isso para garantir a segurança dos dados do nó. Contanto que o valor de Devnonce seja alterado, o nó pode se juntar à rede novamente com sucesso.

No próximo artigo, continuarei a compartilhar mais conhecimentos relacionados à LoRa e espero que todos continuem prestando atenção em nós.

Acho que você gosta

Origin blog.csdn.net/RAKwireless/article/details/115002926
Recomendado
Clasificación