Skip to main content

Configuración LNS

SenseCAP M2 Multi Platform Gateway tiene un Servidor de Red LoRaWAN integrado, está basado en Chirpstack, proporciona una solución rápida y confiable para lanzar una red LoRaWAN.

Configuración del Gateway

Configure el gateway a través de la interfaz web, por favor consulte la Guía de Inicio Rápido para iniciar sesión en Luci.

Configuración del Plan de Canales

Navegue a LoRa > Channel Plan

pir

Seleccione la Región y el plan de frecuencia.

pir

Después de configurar, haga clic en Save&Apply

Configuración del Servidor de Red Local

Navegue a LoRa > LoRa Network

pir

Configure el Modo a Local Network Server, agregue su información de MQTT (Broker Host/Port/User/Password), otros parámetros pueden mantener el valor predeterminado.

pir

Haga clic en Save&Apply para aplicar su configuración.

Nota

Tomará aproximadamente 1 minuto iniciar el proceso, luego podrá acceder a la configuración de la interfaz gráfica.

Configuración de la Interfaz Gráfica ChirpStack

Inicie sesión en la interfaz gráfica ChirpStack a través de http://localhost:8080.

pir

La cuenta y contraseña predeterminadas: admin.

pir

Luego verá la página del panel de control.

pir

Verificar las Regiones

Navegue a Network Server > Regions.

Debería haber un ID de Región, haga clic en él y confirme la información, debería ser igual a su configuración en el paso anterior.

pir

pir

Agregar Perfil de Dispositivo

Navegue a Tenant > Device Profiles, y haga clic en Add Profile.

pir

MAC version: LoRaWAN 1.0.3

Regional parameters reversion: A

ADR algorithm: Default ADR algorithm(LoRa only)

Expected uplink interval: Personalizar, predeterminado 3600s

pir

Navegue a Codec, y seleccione JavaScript functions, copie el Decodificador SenseCAP para TTN y envíelo.

pir

Agregar Gateway

Navegue a Gateway, y haga clic en Add Gateway.

pir

Defina el Nombre y el ID del Gateway (puede hacer clic para generar aleatoriamente el ID), luego envíelo.

pir

Agregar Dispositivo

Navegue a Tenant > Application, y haga clic en Agregar Application.

Nombre su aplicación y envíela.

pir

Navegue a su aplicación, y haga clic en Add device.

pir

Pegue su EUI del dispositivo y seleccione el perfil de dispositivo que agregamos antes, luego envíelo.

pir

Pegue la clave de aplicación y haga clic en enviar.

pir

tip

Por favor consulte la guía del usuario para configurar el dispositivo correctamente, seleccione la plataforma como Other Platform.

Verificar el estado del dispositivo

Verifique los Events de su dispositivo, obtendrá el paquete de unión cuando el dispositivo se una a la red.

pir

También puede verificar los detalles del paquete.

pir

Integraciones

Este capítulo es para el desarrollo de servicios en la nube, la siguiente guía es de referencia.

MQTT

Tema

La integración MQTT expone todos los eventos como se documenta en los tipos de eventos.

El tema de evento predeterminado es:

application/APPLICATION_ID/device/DEV_EUI/event/EVENT

Consulta Tipos de Eventos para más detalles.

Puedes encontrar el ID de la aplicación en la pestaña de tu aplicación:

pir

  • Tipos de eventos
upEvento de enlace ascendente
statusEstado de margen y batería
joinEvento de unión del dispositivo
ackConfirmación (n)ack de enlace descendente
txackConfirmación de transmisión de enlace descendente
logEvento de registro (o error)
locationEvento de ubicación
integrationEvento de integración
Note

+ significa recibir todos los mensajes

Ejemplo:

  • Para recibir mensajes de enlace ascendente de todos los dispositivos bajo una puerta de enlace determinada:
gateway/<GATEWAY_EUI>/device/+/event/up
  • Para recibir todos los mensajes de todos los dispositivos bajo la aplicación:
application/+/device/+/event/+
  • Para recibir todos los mensajes de dispositivos de todas las puertas de enlace:
gateway/+/device/+/event/+

Puedes verificar el gatewayid para distinguir los gateways.

pir

Carga útil

Cuando object.valid es verdadero, significa que el análisis de datos es exitoso, entonces puedes recorrer object.messages y extraer el tipo de datos que necesites.

pir

  1. Ejemplo de descripción de carga útil del evento Up para sensores SenseCAP LoRaWAN S210X:

pir

  • upload_battery: Batería
  • upload_interval: intervalo de carga, unidad: Segundo
  • upload_version: Versión de Hardware/Firmware
  • report_telemetry: Valor de medición

El measurementId en el mensaje 'report_telemetry' por favor consulta SenseCAP Measurement ID para más detalles.

pir

  1. Ejemplo de descripción de carga útil del evento Up para registrador de datos SenseCAP:

pir

El measurementId en el mensaje 'report_telemetry' por favor consulta SenseCAP Measurement ID para más detalles.

HTTP

Haz clic en + en la pestaña HTTP para agregar una nueva integración HTTP.

LNS enviará mensajes como POST a la URL configurada.

pir

Envía la información de tu URL.

Nota

Solo soporta http, no https.

pir

La integración HTTP realizará solicitudes POST al endpoint de evento configurado o endpoints (se pueden configurar múltiples URLs, separadas por comas). El parámetro de consulta de URL del evento indica el tipo del evento.

La integración HTTP expone todos los eventos como se documenta en Event Type.

Ejemplo:

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

Mensaje de downlink:

info

Se recomienda marcar el downlink como retenido, entonces el comando no se ejecutará repetidamente.

El Topic por defecto es:application/APPLICATION_ID/device/DEV_EUI/command/down

command: Por favor consulta el comando de downlink en el Manual de Usuario del Dispositivo para más detalles.

Topicapplication/APPLICATION_ID/device/DEV_EUI/command/down
devEUIEUI del Dispositivo
confirmedtrue/false(si la carga útil debe ser enviada como datos confirmados hacia abajo o no)
fPortFPort a usar (debe ser > 0)
datadatos codificados en base64 (texto plano, será encriptado por ChirpStack)

Ejemplo:

  1. Reiniciar Sensores LoRaWAN SenseCAP S210x:

Topic:

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

{

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

"confirmed":true,

"fPort":2,

"data":"AMgAAAAAACsm"

}
  1. Configurar el intervalo de carga de los Sensores LoRaWAN SenseCAP S210x a 1min :

Tema

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

Json

{

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

"confirmed":true,

"fPort":2,

"data":"AIkAESIBAJBQ

"
}
Loading Comments...