Pular para o conteúdo principal

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é LoRaChannel Plan

pir

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

pir

Após a configuração, clique em Save&Apply

Configuração do Servidor de Rede Local

Navegue até LoRaLoRa Network

pir

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.

pir

Clique em Save&Apply para aplicar suas configurações.

Note

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.

pir

A conta e senha padrão: admin.

pir

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

pir

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.

pir

pir

Adicionar Perfil de Dispositivo

Navegue até Tenant > Device Profiles e clique em Add Profile.

pir

MAC version: LoRaWAN 1.0.3

Regional parameters reversion: A

ADR algorithm: Default ADR algorithm(LoRa only)

Expected uplink interval: Personalizado, padrão 3600s

pir

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

pir

Adicionar Gateway

Navegue até Gateway e clique em Add Gateway.

pir

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

pir

Adicionar Dispositivo

Navegue até Tenant > Application e clique em Add Application.

Dê um nome para sua aplicação e envie.

pir

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

pir

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

pir

Cole a Application key e clique em enviar.

pir

dica

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.

pir

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

pir

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:

pir

  • Event types
upEvento de uplink
statusMargem e status da bateria
joinEvento de junção de dispositivo
ackConfirmação de downlink (n)ack
txackConfirmação de transmissão de downlink
logEvento de log (ou erro)
locationEvento de localização
integrationEvento de integração
Note

+ 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.

pir

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.

pir

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

pir

  • upload_battery: Bateria
  • upload_interval: intervalo de upload, unidade: Segundo
  • upload_version: Versão de Hardware/Firmware
  • report_telemetry: Valor da medição

O measurementId na mensagem ‘report_telemetry’, por favor verifique SenseCAP Measurement ID para mais detalhes.

pir

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

pir

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.

pir

Envie as informações da sua URL.

Note

Suporta apenas http, não https.

pir

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()

Mensagem de downlink:

info

É 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ópicoapplication/APPLICATION_ID/device/DEV_EUI/command/down
devEUIEUI do dispositivo
confirmedtrue/false(se o payload deve ser enviado como dado de downlink confirmado ou não)
fPortFPort a ser usado (deve ser > 0)
datadados codificados em base64 (texto simples, será criptografado pelo ChirpStack)

Exemplo:

  1. Reiniciar os sensores LoRaWAN SenseCAP S210x:

Tópico:

application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down Json:

{

"devEui":"2CF7F1C2\*\*\*",

"confirmed":true,

"fPort":2,

"data":"AMgAAAAAACsm"

}
  1. 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

"
}
Loading Comments...