Lorawan-stack: Tipos de dispositivos de documentos OTAA, ABP y Multicast

Creado en 8 jul. 2019  ·  14Comentarios  ·  Fuente: TheThingsNetwork/lorawan-stack

Resumen


PREGUNTA

¿Existe la posibilidad de enviar mensajes de multidifusión con webhook?
Desarrollamos el cargador de arranque LoRaWAN (actualmente funciona en Clase A) y es muy ineficaz.
La transferencia de firmware completa (para un nodo) tarda aproximadamente una hora @80dBm para DR4 (~64kB).

¿Existe la posibilidad de enviar datos de enlace descendente de firmware como mensajes de multidifusión a muchos nodos (para la aplicación) mediante webhooks?
Entonces cada nodo puede consultar los paquetes perdidos individualmente.
Creo que minimizaría la utilización del "Tiempo OTA".
¿Hay algunos documentos/información para esto?

El dispositivo final es Telit LoRaWAN 1.0.2

documentation in progress

Comentario más útil

Un dispositivo multicast registrado en lorawan-stack puede representar una cantidad arbitraria de dispositivos físicos.
Entonces, supongamos que tiene 5 dispositivos que desea operar en el modo de multidifusión, luego aprovisionaría los 5 dispositivos físicos para usar:

  • DevAddr idéntico (por ejemplo 00E4304D )
  • claves de sesión idénticas (por ejemplo A0CAD5A30036DBE03096EB67CA975BAA y A0CAD5A30036DBE03096EB67CA975BAA para AppSKey y NwkSKey respectivamente).

Luego, registraría un solo dispositivo en lorawan-stack con las claves de sesión y DevAddr que eligió y el indicador multicast establecido.
Digamos que llamó al dispositivo que acaba de crear dev1 y el nombre de la aplicación es app1 .
Supongamos que luego procede a enviar un enlace descendente por dev1 en la aplicación app1 (consulte la documentación sobre las diversas formas de hacerlo), luego lorawan-stack programaría un solo enlace descendente para dispositivo con DevAddr 00E4304D .
Todos los dispositivos que coincidan con DevAddr 00E4304D recibirán el enlace descendente único , es decir, los 5 (idealmente) dispositivos que aprovisionó anteriormente.

Tenga en cuenta que algunos dispositivos físicos pueden participar en varias sesiones simultáneamente.
Supongamos que tiene 5 dispositivos de este tipo y desea que funcionen como OTAA, al mismo tiempo que forman parte del grupo de multidifusión:

  1. Registraría cada dispositivo como un dispositivo OTAA separado con su propia ID de dispositivo. (entonces, registre 5 dispositivos - 1 por cada dispositivo físico)
  2. Registraría un solo dispositivo como un dispositivo de multidifusión con una ID de dispositivo distinta (entonces, registre 1 dispositivo - 1 por cada grupo de multidifusión)

La clave para comprender aquí es que el dispositivo de multidifusión registrado puede representar varios dispositivos físicos, sin embargo, todos estos dispositivos físicos deben compartir las claves de sesión y DevAddr.

Todos 14 comentarios

Se eliminaron secciones irrelevantes para problemas de tipo "pregunta"

Referencia #890

P: ¿Existe la posibilidad de enviar mensajes de multidifusión con webhook?

R: Sí, la pila admite el registro de sesiones de multidifusión de Clase C como cualquier otro dispositivo final con el indicador --multicast . Esto se describe en nuestra Introducción: https://github.com/TheThingsNetwork/lorawan-stack/blob/master/doc/gettingstarted.md#creating -a-device

P: ¿Existe la posibilidad de enviar datos de enlace descendente de firmware como mensajes de multidifusión a muchos nodos (para la aplicación) mediante webhooks?

R: Sí, la sesión de multidifusión se registra como cualquier otro dispositivo, por lo que puede programar un enlace descendente exactamente de la misma manera que lo haría con un dispositivo normal.

P: ¿Hay algunos documentos/información para esto?

R: No más de lo que está actualmente en Primeros pasos.

@rvolosatovs @adriansmares IIRC ustedes hicieron pruebas con Clase C y con Multicast, ¿verdad? ¿Deberíamos escribir una buena página de documentación sobre eso?

Si es así, entonces esperemos al #401 antes de hacerlo.

@htdivsser - gracias por responder. Lo vi al empezar.

La sintaxis de webhook (url) es:
curl http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dv1/down/push -X POST -H 'Autorización: Bearer NNSXS.CLCIYOYYEDPLJSSWRNMYS5KCDI45HOE6M3WZIDY.E6DXAAZ4HSX2V6VL7C3244HGNKBO24SEROTXOZURJ "enlaces descendentes":[{"frm_payload":"vu8=","f_port":15,"prioridad":"NORMAL"}]}'

Hay un solo nombre de dispositivo especificado para el destino del enlace descendente

Entonces, ¿cuál es la sintaxis del webhook que impone el mensaje de multidifusión a varios dispositivos?

La idea es que registre un único "pseudodispositivo" que represente un grupo de multidifusión que contiene varios dispositivos físicos. Cuando usa el webhook para programar el enlace descendente al grupo de multidifusión, lo dirige a este pseudodispositivo.

Como puede ver en Primeros pasos, el registro de un pseudodispositivo de este tipo es esencialmente el mismo que el de un dispositivo ABP. DevAddr es la dirección de multidifusión, NwkSKey es McNwkSKey y AppSKey es McAppSKey.

Dado que aún no hemos implementado la configuración de multidifusión remota, la sesión de multidifusión en el lado del dispositivo aún debe configurarse en la capa de la aplicación.

@htdvisser gracias.
¿El pseudodispositivo de multidifusión tiene que ser ABP?
Espero que no entre en conflicto con el acceso directo a dispositivos finales reales.

No puedo encontrar nada sobre la creación de pseudodispositivos y agregar dispositivos a este "grupo" al comenzar que ha mencionado.

También he comprobado:
ttn-lw-cli --ayuda
ttn-lw-cli end-devs --ayuda
ttn-lw-cli dev --ayuda
y no puedo ver una descripción "intuitiva" para pseudodispositivos y grupos.

¿Puede proporcionar comandos para lograr esto?

Los dispositivos @ecities Multicast tienen que ser ABP, ya que no envían enlaces ascendentes y, por lo tanto, no admiten el flujo OTAA por definición.
Registre el dispositivo de la misma manera que lo haría con un dispositivo ABP, pero agregue el indicador multicast .

@rvolosatovs gracias
Multicast devices have to be ABP, since they do not send uplinks and hence do not support OTAA flow by definition
Entonces tenemos que elegir solo uno de ??:
-desarrollo estándar con otta (clase A o C)
-multicast dev con abp (clase C) - indicador creado en la creación del dispositivo y no se puede eliminar. No se pueden vincular los datos en absoluto.

O tal vez haya una solución, por ejemplo: ¿agregar dispositivos a 2 aplicaciones diferentes?
1) para trabajo normal (enlace ascendente/descendente) (ap1)
2) solo para enlace descendente de multidifusión (ap2)
_Pero parece tener problemas con los derechos de acceso; hemos informado un problema aquí_

Register the device same way you would an ABP device, but add the multicast flag.

Tal vez un ejemplo:
Digamos que tengo 2 dispositivos (dev1, dev2 con el mismo McNwkSKey, McAppSKey y tal vez dev-addr)
Los dispositivos finales ttn-lw-cli crean app1 dev1 \
--frequency-plan-id EU_863_870 \
--lorawan-versión 1.0.2 \
--lorawan-phy-versión 1.0.2-b \
--abp\
--session.dev- dirección 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--multidifusión

Los dispositivos finales ttn-lw-cli crean app1 dev2 \
--frequency-plan-id EU_863_870 \
--lorawan-versión 1.0.2 \
--lorawan-phy-versión 1.0.2-b \
--abp\
--session.dev- dirección 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--multidifusión

¿Es correcto?

y desea enviar un mensaje de multidifusión a ambos con webhook.
Todavía no tengo claro cuál sería la URL para el webhook.
http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/00E4304D/down/push

¿Es esto correcto?

O tal vez:

http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dev1/down/push

y será recibido por otros dispositivos con la misma configuración de seguridad donde
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255

??

Un dispositivo multicast registrado en lorawan-stack puede representar una cantidad arbitraria de dispositivos físicos.
Entonces, supongamos que tiene 5 dispositivos que desea operar en el modo de multidifusión, luego aprovisionaría los 5 dispositivos físicos para usar:

  • DevAddr idéntico (por ejemplo 00E4304D )
  • claves de sesión idénticas (por ejemplo A0CAD5A30036DBE03096EB67CA975BAA y A0CAD5A30036DBE03096EB67CA975BAA para AppSKey y NwkSKey respectivamente).

Luego, registraría un solo dispositivo en lorawan-stack con las claves de sesión y DevAddr que eligió y el indicador multicast establecido.
Digamos que llamó al dispositivo que acaba de crear dev1 y el nombre de la aplicación es app1 .
Supongamos que luego procede a enviar un enlace descendente por dev1 en la aplicación app1 (consulte la documentación sobre las diversas formas de hacerlo), luego lorawan-stack programaría un solo enlace descendente para dispositivo con DevAddr 00E4304D .
Todos los dispositivos que coincidan con DevAddr 00E4304D recibirán el enlace descendente único , es decir, los 5 (idealmente) dispositivos que aprovisionó anteriormente.

Tenga en cuenta que algunos dispositivos físicos pueden participar en varias sesiones simultáneamente.
Supongamos que tiene 5 dispositivos de este tipo y desea que funcionen como OTAA, al mismo tiempo que forman parte del grupo de multidifusión:

  1. Registraría cada dispositivo como un dispositivo OTAA separado con su propia ID de dispositivo. (entonces, registre 5 dispositivos - 1 por cada dispositivo físico)
  2. Registraría un solo dispositivo como un dispositivo de multidifusión con una ID de dispositivo distinta (entonces, registre 1 dispositivo - 1 por cada grupo de multidifusión)

La clave para comprender aquí es que el dispositivo de multidifusión registrado puede representar varios dispositivos físicos, sin embargo, todos estos dispositivos físicos deben compartir las claves de sesión y DevAddr.

@rvolosatovs muchas gracias por la muy buena explicación "paso a paso", que elimina la mayoría de las suposiciones

Creo que vale la pena copiarlo en el manual de introducción o en la documentación de multidifusión, ya que esto no es tan obvio en la práctica.

Saludos,

Roberto

@ecities de nada , ¡me alegro de haber podido ayudar!
@adriansmares puedes recoger esto?

@adriansmares sugiriendo que expliquemos un poco más en detalle qué son los dispositivos OTAA, ABP y Multicast, especialmente este último.

Estoy tratando de crear un dispositivo de multidifusión (comando copiado del ejemplo de inicio)

Los dispositivos finales ttn-lw-cli crean ap3 lldv3 \
--frequency-plan-id EU_863_870 \
--lorawan-versión 1.0.2 \
--lorawan-phy-versión 1.0.2-b \
--abp\
--session.dev-dirección 11E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--multidifusión

y recibi un mensaje:
indicador desconocido: --multidifusión

versión ttn-lw-cli
La interfaz de línea de comandos de Things Network: ttn-lw-cli
Versión: 3.0.3
Ir a la versión: go1.12.5
SO/Arco: linux/amd64

Espere v3.1.0 o cree master desde la fuente, vea DEVELOPMENT.md .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

johanstokking picture johanstokking  ·  8Comentarios

kschiffer picture kschiffer  ·  7Comentarios

ecities picture ecities  ·  5Comentarios

johanstokking picture johanstokking  ·  5Comentarios

htdvisser picture htdvisser  ·  9Comentarios