Configuración LNS del Gateway Multi-Plataforma SenseCAP M2
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
Seleccione la Región y el plan de frecuencias.
Después de configurar, haga clic en Save&Apply
Configuración del Servidor de Red Local
Navegue a LoRa
> LoRa Network
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.
Haga clic en Save&Apply
para aplicar su configuración.
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
.
La cuenta y contraseña predeterminadas: admin
.
Luego verá la página del panel de control.
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.
Agregar Perfil de Dispositivo
Navegue a Tenant
> Device Profiles
, y haga clic en Add Profile
.
Versión MAC: LoRaWAN 1.0.3
Revisión de parámetros regionales: A
Algoritmo ADR: Algoritmo ADR predeterminado (solo LoRa)
Intervalo de uplink esperado: Personalizar, predeterminado 3600s
Navegue a Codec
, y seleccione JavaScript functions
, copie el Decodificador SenseCAP para TTN y envíelo.
Agregar Gateway
Navegue a Gateway
, y haga clic en Add Gateway
.
Defina el Nombre y el ID del Gateway (puede hacer clic para generar aleatoriamente el ID), luego envíelo.
Agregar Dispositivo
Navegue a Tenant
> Application
, y haga clic en Add Application
.
Nombre su aplicación y envíela.
Navegue a su aplicación, y haga clic en Add device
.
Pegue su EUI del dispositivo y seleccione el perfil de dispositivo que agregamos antes, luego envíelo.
Pegue la clave de aplicación y haga clic en enviar.
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.
También puede verificar los detalles del paquete.
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:
- Tipos de eventos
up | Evento de enlace ascendente |
---|---|
status | Estado de margen y batería |
join | Evento de unión del dispositivo |
ack | Confirmación (n)ack de enlace descendente confirmado |
txack | Confirmación de transmisión de enlace descendente |
log | Evento de registro (o error) |
location | Evento de ubicación |
integration | Evento de integración |
+
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.
Payload
Cuando object.valid es true, significa que el análisis de datos fue exitoso, entonces puedes recorrer object.messages y extraer el tipo de datos que necesites.
- Ejemplo de descripción del payload del evento Up para sensores SenseCAP LoRaWAN S210X:
upload_battery
: Bateríaupload_interval
: intervalo de carga, unidad: Segundoupload_version
: Versión de Hardware/Firmwarereport_telemetry
: Valor de medición
El measurementId
en el mensaje 'report_telemetry' por favor consulta SenseCAP Measurement ID para más detalles.
- Ejemplo de descripción del payload del evento Up para SenseCAP Data logger:
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.
Envía la información de tu URL.
Solo soporta http, no https.
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()
Enlace descendente
Mensaje de enlace descendente:
Se recomienda marcar el enlace descendente como retenido. Entonces el comando no se ejecutará repetidamente.
El Tema predeterminado es: application/APPLICATION_ID/device/DEV_EUI/command/down
command
: Por favor consulte el comando de enlace descendente en el Manual de Usuario del Dispositivo para más detalles.
Tema | application/APPLICATION_ID/device/DEV_EUI/command/down |
---|---|
devEUI | EUI del Dispositivo |
confirmed | true/false(si la carga útil debe enviarse como datos confirmados descendentes o no) |
fPort | FPort a usar (debe ser > 0) |
data | datos codificados en base64 (texto plano, será encriptado por ChirpStack) |
Ejemplo:
- Reiniciar Sensores LoRaWAN SenseCAP S210x:
Tema:
application/dbf6\*\*\*\*6c92/device/2CF7F1C2\*\*\*/command/down
Json:
{
"devEui":"2CF7F1C2\*\*\*",
"confirmed":true,
"fPort":2,
"data":"AMgAAAAAACsm"
}
- Configura 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"
}