CLI nécessite NS et AS pour créer des appareils en JS
$ 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
dire abp
n'est pas défini, supports_join
est défini, ce qui est un champ NS, déclenchant un appel NS pour créer/mettre à jourJe veux pouvoir créer des appareils en JS uniquement
Forcez CLI à ne pas appeler JS/NS/AS. Ceci est similaire à la console, où nous désactivons la fonctionnalité lorsque le composant n'est pas là.
Examinera
De plus, la CLI nécessite actuellement que lorawan_version
soit défini en toutes circonstances, alors qu'il n'est nécessaire que lors de la création de périphériques ABP pour valider les clés de session. Suggérer ;
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
Je pense que ce pourrait être une idée d'ajouter ( --skip-is
,) --skip-ns
, --skip-as
et --skip-js
pour permettre aux utilisateurs avancés d'ignorer les créations/mises à jour sur le (IS/)NS/AS/JS. Le --skip-is
peut être un peu délicat, je pense que nous ne devrions pas autoriser celui-ci pour les créations.
Pour autant que je sache, la version MAC est très utile, également pour les appareils OTAA. Si ce n'est pas maintenant, il pourrait toujours être utile de l'avoir dans le futur, donc je pense qu'il serait sage de le garder où il est.
Je pense que ce pourrait être une idée d'ajouter (
--skip-is
,)--skip-ns
,--skip-as
et--skip-js
pour permettre aux utilisateurs avancés d'ignorer les créations/mises à jour sur le (IS/)NS/AS/JS. Le--skip-is
peut être un peu délicat, je pense que nous ne devrions pas autoriser celui-ci pour les créations.
Que diriez-vous de les sauter lorsque le ..._grpc_address
concerné est vide ?
Pour autant que je sache, la version MAC est très utile, également pour les appareils OTAA. Si ce n'est pas maintenant, il pourrait toujours être utile de l'avoir dans le futur, donc je pense qu'il serait sage de le garder où il est.
Il n'est pas connu lors du provisionnement des appareils sur le JS, par exemple lors du provisionnement des éléments sécurisés bien avant que le micrologiciel de l'appareil final ne soit choisi. JS ne se soucie pas non plus de la version MAC, il fonctionne avec la version MAC sélectionnée de NS dans le flux de jointure.
Je ne pense pas que ce soit une bonne idée de regarder la configuration de l'adresse au moment de décider où créer des périphériques finaux, il est tout simplement trop facile de faire des erreurs avec cela (en oubliant de configurer une var env). Ignorer la création de périphérique final sur des types de serveurs spécifiques est un cas d'utilisation spécial qui mérite des indicateurs explicites et ne doit pas être implicitement décidé lorsque certaines configurations sont omises (peut-être par accident).
La suppression de la version MAC est hors de portée de l'OMI pour ce problème et devrait être discutée avec @rvolosatovs avant d'aller de l'avant avec cela.
Ignorer la création de périphérique final sur des types de serveurs spécifiques est un cas d'utilisation spécial qui mérite des indicateurs explicites et ne doit pas être implicitement décidé lorsque certaines configurations sont omises (peut-être par accident).
L'AS autonome et le JS autonome ne sont pas des cas d'utilisation particuliers. Allons-y pour les bools activés par composant puis, comme Console, par défaut true
.
En ce qui concerne le lorawan_version
- Je suis d'accord avec @johanstokking , nous n'en avons besoin que dans la CLI pour créer des périphériques ABP, donc aucune raison de l'exiger.
bool
drapeaux