Configuração de LNS
O Gateway Multi-Plataforma SenseCAP M2 tem um LoRaWAN Network Server integrado, é baseado em Chirpstack e fornece uma solução rápida e confiável para lançar uma rede LoRaWAN.
Configuração do Gateway
Configure o gateway pela interface Web UI, verifique o Quick Start para fazer login no Luci.
Configurações do Plano de Canal
Navegue até LoRa > Channel Plan

Selecione a Região e o plano de Frequência.

Após a configuração, clique em Save&Apply
Configuração do Servidor de Rede Local
Navegue até LoRa > LoRa Network

Defina Mode como Local Network Server, adicione suas informações de MQTT (Broker Host/Port/User/Password), os outros parâmetros podem permanecer com o valor padrão.

Clique em Save&Apply para aplicar suas configurações.
Levará cerca de 1 minuto para iniciar o processo, então você poderá acessar a configuração da GUI.
Configuração da GUI do ChirpStack
Faça login na GUI do ChirpStack via http://localhost:8080.

A conta e senha padrão: admin.

Então você verá a página do dashboard.

Verificar as Regiões
Navegue até Network Server > Regions.
Deve haver um Region ID, clique nele e confirme as informações, elas devem ser as mesmas das suas configurações na etapa anterior.


Adicionar Perfil de Dispositivo
Navegue até Tenant > Device Profiles e clique em Add Profile.

MAC version: LoRaWAN 1.0.3
Regional parameters reversion: A
ADR algorithm: Default ADR algorithm(LoRa only)
Expected uplink interval: Personalizado, padrão 3600s

Navegue até Codec e selecione JavaScript functions, copie o SenseCAP Decoder for TTN e envie.

Adicionar Gateway
Navegue até Gateway e clique em Add Gateway.

Defina o Name e o Gateway ID (você pode clicar para gerar o ID aleatoriamente), então envie.

Adicionar Dispositivo
Navegue até Tenant > Application e clique em Add Application.
Dê um nome para sua aplicação e envie.

Navegue até sua aplicação e clique em Add device.

Cole o EUI do seu dispositivo e selecione o perfil de dispositivo que adicionamos antes, então envie.

Cole a Application key e clique em enviar.

Verifique o guia do usuário para configurar o dispositivo corretamente, selecione a plataforma como Other Platform.
Verificar o status do dispositivo
Verifique os Events do seu dispositivo, você receberá o pacote de junção quando o dispositivo se juntar à rede.

Você também pode verificar os detalhes do pacote.

Integrações
Este capítulo é para desenvolvimento de serviços em nuvem, a seguinte diretriz é para referência.
MQTT
Tópico
A integração MQTT expõe todos os eventos conforme documentado por tipos de Evento.
O tópico de evento padrão é:
application/APPLICATION_ID/device/DEV_EUI/event/EVENT
Consulte Event Types para mais detalhes.
Você pode encontrar o Application id na aba da sua aplicação:

- Event types
| up | Evento de uplink |
|---|---|
| status | Margem e status da bateria |
| join | Evento de junção de dispositivo |
| ack | Confirmação de downlink (n)ack |
| txack | Confirmação de transmissão de downlink |
| log | Evento de log (ou erro) |
| location | Evento de localização |
| integration | Evento de integração |
+ significa receber todas as mensagens
Exemplo:
- Para receber mensagens de uplink de todos os dispositivos sob um determinado gateway:
gateway/<GATEWAY_EUI>/device/+/event/up
- Para receber todas as mensagens de todos os dispositivos sob a aplicação:
application/+/device/+/event/+
- Para receber todas as mensagens de dispositivos de todos os gateways:
gateway/+/device/+/event/+
Você pode verificar o gatewayid para distinguir os gateways.

Payload
Quando object.valid é true, significa que a análise de dados foi bem-sucedida, então você pode percorrer object.messages e extrair o tipo de dado que precisar.

- Descrição de exemplo de payload de evento Up para sensores SenseCAP LoRaWAN S210X:

upload_battery: Bateriaupload_interval: intervalo de upload, unidade: Segundoupload_version: Versão de Hardware/Firmwarereport_telemetry: Valor da medição
O measurementId na mensagem ‘report_telemetry’, por favor verifique SenseCAP Measurement ID para mais detalhes.

- Descrição de exemplo de payload de evento Up para SenseCAP Data logger:

O measurementId na mensagem ‘report_telemetry’, por favor verifique SenseCAP Measurement ID para mais detalhes.
HTTP
Clique em + na aba HTTP para adicionar uma nova integração HTTP.
O LNS enviará mensagens como POST para a URL configurada.

Envie as informações da sua URL.
Suporta apenas http, não https.

A integração HTTP fará requisições POST para o endpoint ou endpoints de evento configurados (várias URLs podem ser configuradas, separadas por vírgulas). O parâmetro de query de URL event indica o tipo do evento.
A integração HTTP expõe todos os eventos conforme documentado por Event Type.
Exemplo:
(main.py)
from http.server import HTTPServer, BaseHTTPRequestHandler
from urllib.parse import urlparse, parse_qs
from chirpstack_api import integration
from google.protobuf.json_format import Parse
class Handler(BaseHTTPRequestHandler):
\# True - JSON marshaler
\# False - Protobuf marshaler (binary)
json = False
def do_POST(self):
self.send_response(200)
self.end_headers()
query_args = parse_qs(urlparse(self.path).query)
content_len = int(self.headers.get('Content-Length', 0))
body = self.rfile.read(content_len)
if query_args["event"][0] == "up":
self.up(body)
elif query_args["event"][0] == "join":
self.join(body)
else:
print("handler for event %s is not implemented" % query_args["event"][0])
def up(self, body):
up = self.unmarshal(body, integration.UplinkEvent())
print("Uplink received from: %s with payload: %s" % (up.device_info.dev_eui, up.data.hex()))
def join(self, body):
join = self.unmarshal(body, integration.JoinEvent())
print("Device: %s joined with DevAddr: %s" % (join.device_info.dev_eui, join.dev_addr))
def unmarshal(self, body, pl):
if self.json:
return Parse(body, pl)
pl.ParseFromString(body)
return pl
httpd = HTTPServer(('', 8090), Handler)
httpd.serve_forever()
Downlink
Mensagem de downlink:
É recomendado marcar o downlink como retido. Assim, o comando não será executado repetidamente.
O tópico padrão é:application/APPLICATION_ID/device/DEV_EUI/command/down
command: Verifique o comando de downlink no Manual do Usuário do Dispositivo para mais detalhes.
| Tópico | application/APPLICATION_ID/device/DEV_EUI/command/down |
|---|---|
| devEUI | EUI do dispositivo |
| confirmed | true/false(se o payload deve ser enviado como dado de downlink confirmado ou não) |
| fPort | FPort a ser usado (deve ser > 0) |
| data | dados codificados em base64 (texto simples, será criptografado pelo ChirpStack) |
Exemplo:
- Reiniciar os sensores LoRaWAN SenseCAP S210x:
Tópico:
application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down
Json:
{
"devEui":"2CF7F1C2\*\*\*",
"confirmed":true,
"fPort":2,
"data":"AMgAAAAAACsm"
}
- Definir o intervalo de upload dos sensores LoRaWAN SenseCAP S210x para 1 min:
Tópico:
application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down
Json:
{
"devEui":"2CF7F1C2\*\*\*",
"confirmed":true,
"fPort":2,
"data":"AIkAESIBAJBQ
"
}