Lorawan-stack: CLI requiere NS y AS para crear dispositivos en JS

Creado en 21 jun. 2019  ·  6Comentarios  ·  Fuente: TheThingsNetwork/lorawan-stack

Resumen

CLI requiere NS y AS para crear dispositivos en JS

Pasos para reproducir

  1. Cree un dispositivo con solo campos JS, es decir, $ ttn-lw-cli dev create test-app test-dev --join-eui 0102030405060708 --dev-eui 01020304050607ff --root-keys.app-key.key 01020304050607080102030405060708 --resets-join-nonces=true --net-id=000001 --network-server-address 000001

¿Qué ves ahora?

  • Dado que abp está configurado, supports_join está configurado, que es un campo NS, lo que activa un resultado NS para crear / actualizar
  • Al crear el dispositivo, NS se ve afectado de todos modos
  • Pero NS requiere que se establezca un perfil de dispositivo, es decir, versiones LoRaWAN MAC y PHY

¿Qué quieres ver en su lugar?

Quiero poder crear dispositivos solo en JS

¿Cómo se propone implementar esto?

Obligue a CLI a no llamar a JS / NS / AS. Esto es similar a la consola, donde deshabilitamos la funcionalidad cuando el componente no está allí.

¿Puede hacer esto usted mismo y enviar una solicitud de extracción?

Será revisada, será reseñada

bug in progress ucli

Todos 6 comentarios

Además, la CLI actualmente requiere que se establezca lorawan_version en todas las circunstancias, mientras que solo es necesario cuando se crean dispositivos ABP para validar las claves de sesión. Sugerencia;

diff --git a/cmd/ttn-lw-cli/commands/end_devices.go b/cmd/ttn-lw-cli/commands/end_devices.go
index 2fd69e78..b20c9297 100644
--- a/cmd/ttn-lw-cli/commands/end_devices.go
+++ b/cmd/ttn-lw-cli/commands/end_devices.go
@@ -294,19 +294,6 @@ var (
                paths = append(paths, ttnpb.FlattenPaths(decodedPaths, endDeviceFlattenPaths)...)
            }

-           var macVersion ttnpb.MACVersion
-           s, err := setEndDeviceFlags.GetString("lorawan_version")
-           if err != nil {
-               return err
-           }
-
-           if err := macVersion.UnmarshalText([]byte(s)); err != nil {
-               return err
-           }
-           if err := macVersion.Validate(); err != nil {
-               return errInvalidMACVerson
-           }
-
            setDefaults, _ := cmd.Flags().GetBool("defaults")
            if setDefaults {
                device.NetworkServerAddress = getHost(config.NetworkServerGRPCAddress)
@@ -344,6 +331,17 @@ var (
                        "session.keys.app_s_key.key",
                        "session.dev_addr",
                    )
+                   var macVersion ttnpb.MACVersion
+                   s, err := setEndDeviceFlags.GetString("lorawan_version")
+                   if err != nil {
+                       return err
+                   }
+                   if err := macVersion.UnmarshalText([]byte(s)); err != nil {
+                       return err
+                   }
+                   if err := macVersion.Validate(); err != nil {
+                       return errInvalidMACVerson
+                   }
                    if macVersion.Compare(ttnpb.MAC_V1_1) >= 0 {
                        device.Session.SessionKeys.SNwkSIntKey = &ttnpb.KeyEnvelope{Key: generateKey()}
                        device.Session.SessionKeys.NwkSEncKey = &ttnpb.KeyEnvelope{Key: generateKey()}

cc @rvolosatovs

Creo que podría ser una idea agregar ( --skip-is ,) --skip-ns , --skip-as y --skip-js banderas para permitir que los usuarios avanzados omitan creaciones / actualizaciones en el (IS /) NS / AS / JS. El --skip-is puede ser un poco complicado, creo que no deberíamos permitirlo para las creaciones.

Hasta donde yo sé, la versión MAC es muy útil, también para dispositivos OTAA. Si no es ahora, aún podría ser valioso tenerlo en el futuro, así que creo que sería prudente mantenerlo donde está.

Creo que podría ser una idea agregar ( --skip-is ,) --skip-ns , --skip-as y --skip-js banderas para permitir que los usuarios avanzados omitan creaciones / actualizaciones en el (IS /) NS / AS / JS. El --skip-is puede ser un poco complicado, creo que no deberíamos permitirlo para las creaciones.

¿Qué tal omitirlos cuando el correspondiente ..._grpc_address está vacío?

Hasta donde yo sé, la versión MAC es muy útil, también para dispositivos OTAA. Si no es ahora, aún podría ser valioso tenerlo en el futuro, así que creo que sería prudente mantenerlo donde está.

No se sabe cuando se aprovisionan dispositivos en JS, por ejemplo, cuando se aprovisionan elementos seguros mucho antes de que se elija el firmware del dispositivo final. A JS tampoco le importa la versión MAC, funciona con la versión MAC seleccionada de NS en el flujo de unión.

No creo que sea una buena idea mirar la configuración de la dirección al decidir dónde crear los dispositivos finales, es demasiado fácil cometer errores con eso (al olvidar configurar una var env). Omitir la creación de dispositivos finales en tipos de servidores específicos es un caso de uso especial que merece indicadores explícitos y no debe decidirse implícitamente cuando se omite cierta configuración (posiblemente por accidente).


La eliminación de la versión MAC está fuera del alcance de la OMI para este problema y debe discutirse con @rvolosatovs antes de seguir adelante con eso.

Omitir la creación de dispositivos finales en tipos de servidores específicos es un caso de uso especial que merece indicadores explícitos y no debe decidirse implícitamente cuando se omite cierta configuración (posiblemente por accidente).

El AS autónomo y el JS autónomo no son casos de uso especiales. Vamos a buscar bools habilitados por componente y luego, como Console, por defecto true .

Con respecto al lorawan_version , estoy de acuerdo con @johanstokking , solo lo necesitamos en CLI para crear dispositivos ABP, por lo que no hay razón para requerirlo.
bool banderas

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

Temas relacionados

johanstokking picture johanstokking  ·  5Comentarios

htdvisser picture htdvisser  ·  4Comentarios

kschiffer picture kschiffer  ·  4Comentarios

kschiffer picture kschiffer  ·  6Comentarios

adamsondelacruz picture adamsondelacruz  ·  7Comentarios