CLI erfordert NS und AS zum Erstellen von Geräten in 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
abp
ist, wird supports_join
gesetzt, was ein NS-Feld ist, das einen NS-Treffer zum Erstellen/Aktualisieren auslöstIch möchte Geräte nur in JS erstellen können
Erzwingen Sie, dass CLI JS/NS/AS nicht aufruft. Dies ähnelt der Konsole, bei der wir die Funktionalität deaktivieren, wenn die Komponente nicht vorhanden ist.
Werde es überprüfen
Außerdem erfordert die CLI derzeit unter allen Umständen die Einstellung von lorawan_version
, während dies nur beim Erstellen von ABP-Geräten zum Überprüfen der Sitzungsschlüssel erforderlich ist. Vorschlagen;
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
Ich denke, es könnte eine Idee sein, ( --skip-is
,) --skip-ns
, --skip-as
und --skip-js
hinzuzufügen, um es fortgeschrittenen Benutzern zu ermöglichen, Erstellungen/Aktualisierungen auf der (IS/)NS/AS/JS. Das --skip-is
kann ein bisschen knifflig sein, ich denke, wir sollten das nicht für Kreationen zulassen.
Soweit ich weiß, ist die MAC-Version sehr nützlich, auch für OTAA-Geräte. Wenn es nicht jetzt ist, könnte es immer noch wertvoll sein, es in Zukunft zu haben, daher denke ich, dass es ratsam wäre, es dort zu lassen, wo es ist.
Ich denke, es könnte eine Idee sein, (
--skip-is
,)--skip-ns
,--skip-as
und--skip-js
hinzuzufügen, um es fortgeschrittenen Benutzern zu ermöglichen, Erstellungen/Aktualisierungen auf der (IS/)NS/AS/JS. Das--skip-is
kann ein bisschen knifflig sein, ich denke, wir sollten das nicht für Kreationen zulassen.
Wie wäre es, sie zu überspringen, wenn das betreffende ..._grpc_address
leer ist?
Soweit ich weiß, ist die MAC-Version sehr nützlich, auch für OTAA-Geräte. Wenn es nicht jetzt ist, könnte es immer noch wertvoll sein, es in Zukunft zu haben, daher denke ich, dass es ratsam wäre, es dort zu lassen, wo es ist.
Es ist nicht bekannt, wenn Geräte auf dem JS bereitgestellt werden, beispielsweise wenn sichere Elemente bereitgestellt werden, lange bevor die Firmware des Endgeräts ausgewählt wird. JS kümmert sich auch nicht um die MAC-Version, es funktioniert mit der ausgewählten MAC-Version von NS im Join-Flow.
Ich glaube nicht, dass es eine gute Idee ist, bei der Entscheidung, wo Endgeräte erstellt werden sollen, auf die Adresskonfiguration zu achten, da kann man einfach Fehler machen (wenn man vergisst, eine env var zu konfigurieren). Das Überspringen der Endgeräteerstellung auf bestimmten Servertypen ist ein besonderer Anwendungsfall, der explizite Flags verdient und nicht implizit entschieden werden sollte, wenn eine bestimmte Konfiguration (möglicherweise versehentlich) weggelassen wird.
Das Entfernen der MAC-Version ist für dieses Problem IMO nicht zulässig und sollte mit werden, bevor damit
Das Überspringen der Endgeräteerstellung auf bestimmten Servertypen ist ein besonderer Anwendungsfall, der explizite Flags verdient und nicht implizit entschieden werden sollte, wenn eine bestimmte Konfiguration (möglicherweise versehentlich) weggelassen wird.
Standalone AS und Standalone JS sind keine speziellen Anwendungsfälle. Gehen wir dann für aktivierte boolesche Werte pro Komponente, wie Console, standardmäßig true
.
In Bezug auf lorawan_version
- Ich stimme @johanstokking zu , wir brauchen es nur in der CLI zum Erstellen von ABP-Geräten, also kein Grund, es zu verlangen.
bool
Flags klingen gut!