Skip to main content

Configuración LNS del Gateway Multi-plataforma SenseCAP M2

Configuración del Gateway

Configura el gateway a través de la interfaz web. Consulta la Guía de Inicio Rápido para acceder a Luci.

Configuración del Plan de Canal

Navega a LoRa > Channel Plan.

pir

Selecciona la Región y el Plan de Frecuencia.

pir

Después de configurar, haz clic en Save & Apply.

Configuración del Servidor de Red Local

Navega a LoRa > LoRa Network.

pir

Establece el Modo en Local Network Server, agrega tu información MQTT (Host/Port/Usuario/Contraseña). Los demás parámetros pueden quedar por defecto.

pir

Haz clic en Save & Apply para aplicar la configuración.

Nota

El proceso tardará aproximadamente 1 minuto en iniciar, luego podrás acceder a la configuración por GUI.

Configuración de la Interfaz Gráfica de ChirpStack

Accede a la interfaz web de ChirpStack mediante http://localhost:8080.

pir

La cuenta y contraseña por defecto es: admin.

pir

Una vez dentro, verás el panel principal.

pir

Verifica las Regiones

Navega a Network Server > Regions.

Debería aparecer un ID de Región. Haz clic en él y confirma que coincida con tu configuración previa.

pir

pir

Agregar Perfil de Dispositivo

Navega a Tenant > Device Profiles, luego haz clic en Add Profile.

pir

Versión MAC: LoRaWAN 1.0.3

Parámetros regionales (reversión): A

Algoritmo ADR: Algoritmo ADR por defecto (solo LoRa)

Intervalo de subida esperado: Personalizado, por defecto 3600s

pir

Navega a la pestaña Codec, selecciona JavaScript functions y copia el Decodificador SenseCAP para TTN, luego envíalo.

pir

Agregar Gateway

Navega a Gateway y haz clic en Add Gateway.

pir

Define el nombre y el ID del gateway (puedes generarlo aleatoriamente), luego envía el formulario.

pir

Agregar Dispositivo

Navega a Tenant > Application y haz clic en Add Application.

Asigna un nombre a tu aplicación y envíala.

pir

Luego entra a tu aplicación y haz clic en Add device.

pir

Pega el Device EUI y selecciona el perfil de dispositivo previamente creado.

pir

Después, pega la clave de aplicación (Application Key) y haz clic en enviar.

pir

Verificar el estado del dispositivo

Consulta la sección Events (Eventos) de tu dispositivo; verás el paquete de unión cuando el dispositivo se conecte a la red.

pir

También puedes consultar los detalles del paquete.

pir

Integraciones

Este capítulo está destinado al desarrollo de servicios en la nube. Las siguientes guías son de referencia.

MQTT

Tema (Topic)

La integración MQTT expone todos los eventos según lo documentado por los tipos de evento.

El tema por defecto 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 Evento
CódigoDescripción
upEvento de subida (Uplink)
statusEstado de margen y batería
joinEvento de unión del dispositivo
ackConfirmación de bajada (ack/nack)
txackConfirmación de transmisión
logEvento de log o error
locationEvento de localización
integrationEvento de integración
Nota

+ significa que se recibirán todos los mensajes.

Ejemplos:

  • Para recibir mensajes uplink de todos los dispositivos bajo un gateway específico:
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 todos los dispositivos y gateways:
gateway/+/device/+/event/+

Puedes usar el gatewayid para distinguir entre diferentes gateways:

pir

Payload (Carga útil)

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

pir

1) Ejemplo de evento uplink de sensores SenseCAP LoRaWAN S210X:

pir

  • upload_battery: Nivel de batería
  • upload_interval: Intervalo de carga (segundos)
  • upload_version: Versión de hardware/firmware
  • report_telemetry: Valor de la medición

Consulta el measurementId dentro de report_telemetry en Measurement ID de SenseCAP para más detalles.

pir

2) Ejemplo de evento uplink para el registrador de datos SenseCAP:

pir

Consulta también el measurementId en Measurement ID de SenseCAP

HTTP

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

El servidor LNS enviará mensajes como POST a la URL configurada.

pir

Envía la información de tu URL.

Nota

Solo se admite HTTP, no HTTPS.

pir

La integración HTTP realizará solicitudes POST al endpoint o endpoints configurados (se pueden usar múltiples URLs separadas por comas). El parámetro event en la URL indica el tipo de evento.

Todos los eventos están documentados en Tipos de Eventos.

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

Se recomienda marcar el mensaje de bajada como "retained" (retenido), para evitar que el comando se ejecute repetidamente.

El tema (topic) por defecto es:
application/APPLICATION_ID/device/DEV_EUI/command/down

command: Consulta el Manual del Usuario del Dispositivo para obtener más detalles sobre los comandos disponibles.

CampoDescripción
Topicapplication/APPLICATION_ID/device/DEV_EUI/command/down
devEUIIdentificador único del dispositivo
confirmedtrue/false (si el mensaje debe enviarse como confirmado o no)
fPortPuerto FPort a utilizar (debe ser > 0)
dataDatos codificados en base64 (en texto plano, serán cifrados por ChirpStack)

Ejemplo 1: Reiniciar sensores SenseCAP S210x LoRaWAN

Topico:

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

Json:

{

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

"confirmed":true,

"fPort":2,

"data":"AMgAAAAAACsm"

}

Ejemplo 2: Establecer intervalo de carga de datos a 1 minuto

Topico

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

Json

{

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

"confirmed":true,

"fPort":2,

"data":"AIkAESIBAJBQ"

}
Loading Comments...