The Things Network: Primeiros passos

A The Things Network ou TTN é um servidor de rede LoRaWAN colaborativa que permite que qualquer pessoa ou empresa possa ser um ponto de conexão LoRaWAN como também pode utilizar a cobertura já existente para conectar os end devices tudo de forma gratuita.

1 O que é The Things Network?

A TTN é um network server criado em 2015 com o objetivo de criar uma cobertura global e colaborativa de LoRaWAN (Long Range Wide Area Network) totalmente gratuita. Um dos maiores feitos realizados pela TTN foi a cobertura completa da cidade de Amsterdam (capital da Holanda) e também algumas cidades da Austrália.

Cobertura LoRaWAN Amsterdan

No Brasil o cenário é bem diferente por conta de dois grandes motivos, o primeiro é que nosso país é muito extenso territorialmente e o segundo é que embora essa tecnologia seja antiga ainda assim não é muito popular se comparado com outros países.

2 Cobertura de LoRaWAN da The Things Network

No mapa de cobertura da TTN possa ser que algumas regiões fiquem parecendo que não há cobertura, pois o mapa unifica vários pontos de cobertura e coloca uma legenda em branco dizendo a quantidade de gateway’s naquela região, o que dificulta e muito na visualização.

Na imagem abaixo tem algumas marcações que demonstram esse problema, porém se aumentar o zoom sobre essas áreas, apareceram mais pontos.

Mapa de cobertura da The Things Network no Brasil com legenda ruim

Porém existe uma outra forma mais eficiente que mostra exatamente todos os gateways disponíveis no Brasil e ainda os segmentam por localidades por meio de comunidades, para ver a cobertura da sua localidade basta clicar aqui. Como você pode ver na imagem abaixo, é muito mais organizado do que o mapa anterior.

Cobertura de LoRaWAN da The Things Network no Brasil

Ao clicar em qualquer nuvem, é possível visualizar a comunidade, lá poderá ter inúmeros membros para trocar experiências e além disso, te da um mapa de cobertura preciso, olha só esse exemplo da comunidade de Curitiba-Paraná.

Cobertura de LoRaWAN dos Gateways da TTN em Curitiba


O interessante é que possível visualizar informações do gateway ao clicar no ícone da antena com sinal.

Especificações de um gateway qualquer da The things network .png

3 Como registrar gateway na The Things Network

A conexão do gateway na rede LoRaWAN da TTN é bastante simples, mas esse tutorial fica mais destinado ao cluster Australiano que trabalha na frequência de 915MHz, se sua região for outra, basta mudar pequenas coisas para funcionar, te explicarei quais são posteriormente.

Primeiramente se conecte com a sua conta TTN, dirija-se ao console em seguida selecione o cluster de cobertura do seu país, no caso do Brasil é o Australiano.

Se estiver na dúvida, tente buscar através da comunidade para saber qual escolher, pois a barra de pesquisa pode acabar recomendando um cluster errado, veja só a recomendação retornada pela própria TTN para o país Brasil.

Cluster errado e o cluster certo da TTN para o Brasil

Após escolher o cluster corretamente, basta apenas abrir o painel de gateway como provavelmente você não tem nada adicionado, não aparecerá nada para você. Então, para registrar basta clicar em “Register gateway”.

Dashboard de registro do end device

Em seguida, aparecerá essa janela pedindo um EUI do gateway, esse EUI é um identificador único de cada gateway e isso é fornecido pelas fabricantes, mas se você utiliza por exemplo uma plataforma baseada em Raspberry pi ou algo similar, você pode usar o endereço MAC.

3.1 Como gerar um EUI para o gateway LoRaWAN usando o MAC

O endereço MAC utiliza por padrão 6 bytes, porém no LoRaWAN o EUI utiliza 8 bytes, então o que fazemos é pegar os três primeiros bytes e adicionar “0xFFFE” e por fim adicionar os 3 bytes restantes.



Se isso não ficou muito claro para você, te demonstrarei esse exemplo a seguir usando o meu próprio gateway. Ao acessar meu gateway via SSH dou um comando “ifconfig” e ele me retorna algumas informações das interfaces de comunicação.

Obtendo endereço MAC para gerar o EUI do gateway

Na listagem do “ifconfig” você poderá escolher qualquer um desses endereços MAC, por utilizar a interface WiFi preferi usar o MAC dela que é:

Obtendo endereço MAC do WiFI para gerar o EUI do gateway

Pronto, agora é só pegar os três primeiros bytes “AC6AA3”, adicionar “FFFE” e por fim adicionar os outros três bytes restantes “0F1609” ficando: “AC6AA3FFFE0F1609”.

3.2 Registrando gateway

Para definir o EUI ele precisa ser único, ou seja, diferente de qualquer um já existente na rede da TTN, caso contrário não será possível adicionar, passando dessa regra alguns outros parâmetros serão exibidos.

Etapa final de registro de gateway na TTN

Gateway ID é nada mais que um identificador do gateway, por padrão todos os gateways gerados pegam o EUI e adicionam um prefixo de texto “EUI”, porém é possível por qualquer nome e é o ID que aparece no mapa quando alguém clica para visualizar a informação.

Gateway name apenas é o nome em que aparecerá no seu painel administrativo, particularmente prefiro adicionar o mesmo que o gateway ID

Frequency plan vai depender de cada localidade, como já foi dito, aqui no Brasil utiliza o mesmo plano Australiano, por isso está como “Austrália 915-928MHz, FSB2”. O FSB2 na verdade é o plano 1 pois a contagem começa em zero, mas nessa plataforma eles iniciam a contagem em 1 para facilitar, porém isso pode ficar confuso para alguns.

Basicamente é só isso que iremos tratar aqui, você pode optar por ficar oculto dentro da rede, basta desmarcar os checkbox. Sobre a autentificarão não vamos entrar em detalhes nesse post, então considere a não usar, caso contrário pode não funcionar. Por fim, basta clicar em “Register Gateway”.

3.3 Dashboard do gateway e configurações finais



Logo após clicar em registrar, você será direcionado ao painel administrativo do gateway que acabou de ser criado, lá você poderá acompanhar tudo relacionado ao gateway. Sendo possível visualizar a quantidade de uplink, downlink, status, dados em tempo real, localidade, servidor e até baixar o código de configuração geral.

Dashboard do gateway da TTN

Perceba que o gateway server address começa como au1 que no caso indica o servidor Australiano, o que é o correto, porém se observar o “frequency plan” notará que começa com “US” o que indica servidor norte americano que trabalha com a faixa de frequência de 902-928MHz.

Para mudarmos isso, basta ir em configurações e muda o plano de frequência para “Austrália 915-928MHz, FSB2” e salvar.

Corrigindo plano de frequência do gateway na TTN

Ao fazer isso, você garante que o Json de configuração global seja exatamente para a faixa de frequência que o seu gateway atuará.

Agora basta configurar o gateway para direcionar a comunicação para o servidor da The Things Network Australiano, porém esse passo a passo a seguir parte do pressuposto que você provavelmente está usando um gateway baseado em Raspberry ou algo similar.

Para seguir a diante, é necessário também que você ache o diretório do “packet forwarder” para modificar o global_conf.json, copiar o código da TTN e colar no arquivo já existente ou substituir.

{
  "SX1301_conf": {
    "lorawan_public": true,
    "clksrc": 1,
    "antenna_gain": 0,
    "radio_0": {
      "enable": true,
      "type": "SX1257",
      "freq": 917200000,
      "rssi_offset": -166,
      "tx_enable": true,
      "tx_freq_min": 915000000,
      "tx_freq_max": 928000000
    },
    "radio_1": {
      "enable": true,
      "type": "SX1257",
      "freq": 917900000,
      "rssi_offset": -166,
      "tx_enable": false
    },
    "chan_multiSF_0": {
      "enable": true,
      "radio": 0,
      "if": -400000
    },
    "chan_multiSF_1": {
      "enable": true,
      "radio": 0,
      "if": -200000
    },
    "chan_multiSF_2": {
      "enable": true,
      "radio": 0,
      "if": 0
    },
    "chan_multiSF_3": {
      "enable": true,
      "radio": 0,
      "if": 200000
    },
    "chan_multiSF_4": {
      "enable": true,
      "radio": 1,
      "if": -300000
    },
    "chan_multiSF_5": {
      "enable": true,
      "radio": 1,
      "if": -100000
    },
    "chan_multiSF_6": {
      "enable": true,
      "radio": 1,
      "if": 100000
    },
    "chan_multiSF_7": {
      "enable": true,
      "radio": 1,
      "if": 300000
    },
    "chan_Lora_std": {
      "enable": true,
      "radio": 0,
      "if": 300000,
      "bandwidth": 500000,
      "spread_factor": 8
    },
    "chan_FSK": {
      "enable": false
    },
    "tx_lut_0": {
      "pa_gain": 0,
      "mix_gain": 8,
      "rf_power": -6,
      "dig_gain": 0
    },
    "tx_lut_1": {
      "pa_gain": 0,
      "mix_gain": 10,
      "rf_power": -3,
      "dig_gain": 0
    },
    "tx_lut_2": {
      "pa_gain": 0,
      "mix_gain": 12,
      "rf_power": 0,
      "dig_gain": 0
    },
    "tx_lut_3": {
      "pa_gain": 1,
      "mix_gain": 8,
      "rf_power": 3,
      "dig_gain": 0
    },
    "tx_lut_4": {
      "pa_gain": 1,
      "mix_gain": 10,
      "rf_power": 6,
      "dig_gain": 0
    },
    "tx_lut_5": {
      "pa_gain": 1,
      "mix_gain": 12,
      "rf_power": 10,
      "dig_gain": 0
    },
    "tx_lut_6": {
      "pa_gain": 1,
      "mix_gain": 13,
      "rf_power": 11,
      "dig_gain": 0
    },
    "tx_lut_7": {
      "pa_gain": 2,
      "mix_gain": 9,
      "rf_power": 12,
      "dig_gain": 0
    },
    "tx_lut_8": {
      "pa_gain": 1,
      "mix_gain": 15,
      "rf_power": 13,
      "dig_gain": 0
    },
    "tx_lut_9": {
      "pa_gain": 2,
      "mix_gain": 10,
      "rf_power": 14,
      "dig_gain": 0
    },
    "tx_lut_10": {
      "pa_gain": 2,
      "mix_gain": 11,
      "rf_power": 16,
      "dig_gain": 0
    },
    "tx_lut_11": {
      "pa_gain": 3,
      "mix_gain": 9,
      "rf_power": 20,
      "dig_gain": 0
    },
    "tx_lut_12": {
      "pa_gain": 3,
      "mix_gain": 10,
      "rf_power": 23,
      "dig_gain": 0
    },
    "tx_lut_13": {
      "pa_gain": 3,
      "mix_gain": 11,
      "rf_power": 25,
      "dig_gain": 0
    },
    "tx_lut_14": {
      "pa_gain": 3,
      "mix_gain": 12,
      "rf_power": 26,
      "dig_gain": 0
    },
    "tx_lut_15": {
      "pa_gain": 3,
      "mix_gain": 14,
      "rf_power": 27,
      "dig_gain": 0
    }
  },
  "gateway_conf": {
    "gateway_ID": "AC6AA3FFFE0F1609",
    "server_address": "au1.cloud.thethings.network",
    "serv_port_up": 1700,
    "serv_port_down": 1700,
    "servers": [
      {
        "gateway_ID": "AC6AA3FFFE0F1609",
        "server_address": "au1.cloud.thethings.network",
        "serv_port_up": 1700,
        "serv_port_down": 1700,
        "serv_enabled": true
      }
    ]
  }
}

Salve as alterações feitas, reinicie o gateway e aguarde ele estabelecer a conexão com a TTN, você pode acompanhar a conexão lá no dashboard.

4 Conectando End device LoRaWAN na The Things Network

Se na sua região tem cobertura da TTN ou você mesmo já configurou o gateway, basta agora conectar o end device a sua aplicação na TTN, mas antes de já partirmos para o passo a passo na TTN, vamos primeiramente entender sobre os dois métodos de conexão com a rede.

4.1 Métodos de conexão com o servidor



O LoRaWAN tem dois métodos de conexão uma é a OTAA (Over The Air Activation) e a outra é a ABP (Activation By Personalization). A OTAA é a mais segura e solicita uma autentificação do servidor, já a APB não precisa de autentificação.

Tanto a OTAA como APB utilizam apenas 3 parâmetros para estabelecer a conexão, porém esses parâmetros são distintos dos dois métodos, veja só quais são esses parâmetros de cada um.

OTAA

  • Application EUI (AppEUI/JoinEUI);
  • Application Key (AppKey);
  • Device EUI (DevEUI);

APB

  • Device Address (DevAdd);
  • Application Session Key (AppSKey);
  • Network Session Key (NwkSKey);

4 Como obter parâmetros OTAA e APB dos end devices?

Cada end device tem seu datasheet ensinando como usar, porém fazer toda a configuração e obtenção de cada parâmetro de forma manual pode ser uma tarefa bem chata e complicada para alguns, por isso é interessante utilizar uma biblioteca para fazer esse processo chato.

Você pode utilizar a biblioteca para o LoRaWAN da Radioenge e logo no código exemplo é possível obter todos esses parâmetros de conexão, menos o DevEUI que fica definido internamente no hardware. Além disso, é necessário que você domine o módulo LoRaWAN da Radioenge antes mesmo de prosseguir com a leitura, caso não saiba usar basta clicar aqui.

Após de ter dominado o LoRaWAN da Radioenge, montado o diagrama exemplo e instalado a biblioteca no Arduino IDE, agora basta abrir a serial e salvar os dados exibidos

Parâmetros LoRaWAN

4.2 Criando aplicação e conectando o End Device na TTN

Com todos os parâmetros necessário, agora vamos criar uma aplicação no The Things Network, para isso basta clicar em “aplication”no menu superior e em seguida em “Create Application”. Aqui vamos seguir a mesma recomendação do gateway de colocar o mesmo nome para ambos.

Criação de aplicação na TTN

Feito isso, agora teremos que adicionar um end device a nossa aplicação, para adicionar um novo end device, basta clicar no item “end device” localizado no menu esquerdo e em seguida clicar em “Register end Device”. Em seguida aparecerá essa tela:



Como este exemplo utiliza o módulo da Radioenge e não consta em “end device brand” termos que inserir os parâmetros de forma manual para que tudo funcione adequadamente, mas caso você tenha algum LoRaWAN listado, basta selecionar e pular a etapa seguinte.

4.2.1 Configurando end device da Radioenge

Configurar o end device da Radioenge é muito simples, basta seguir exatamente o que está na imagem a seguir, caso contrário mesmo que todos os parâmetros de conexão sejam configurados corretamente, ainda assim o end device tentará se conectar mas não irá conseguir.

Parâmetros de configuração da versão do LoRaWAN do end device da Radioenge

4.2.2 Parâmetros inicial de conexão do end device

Agora basta colocar o JoinEUI, confirmar e após confirmar vai aparecer o resto dos parâmetros, o interessante é que caso você queira criar um endereço basta clicar em gerar e posteriormente definir em seu end device.

Parâmetros de configuração da versão do LoRaWAN do end device da Radioenge

Por padrão toda primeira comunicação com o servidor sempre será através do método de conexão OTAA e se você observou atentamente, verá que não há parâmetros do método APB.

4.2.3 Conexão via método APB

Após o end device realizar a primeira comunicação com o servidor, já será possível realizar a conexão através do método APB, para isso basta ir no dashbord do end device e logo de cara já será possível ver alguns parâmetros adicionais para colocarmos.

Dashboard do end device na TTN

Não é necessário preencher todos os dados, apenas aquilo que pertence ao método APB, agora veja que o “device address” já fica preenchido, então só é necessário adicionar o AppSKEy e o NwkSkey.



4.4 Testando comunicação do end device com a TTN

Toda primeira conexão com a TTN terá que ser via OTAA, depois que a comunicação é estabelecida é possível se conectar via APB, para fazer isso é necessário ir no dashboard do end device e colocar os parametros respectivos a APB e salvar as modificaçãoes.