Lorawan-stack: CLI erfordert NS und AS zum Erstellen von Geräten in JS

Erstellt am 21. Juni 2019  ·  6Kommentare  ·  Quelle: TheThingsNetwork/lorawan-stack

Zusammenfassung

CLI erfordert NS und AS zum Erstellen von Geräten in JS

Schritte zum Reproduzieren

  1. Erstellen Sie ein Gerät nur mit JS-Feldern, dh $ 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

Was siehst du jetzt?

  • Da abp ist, wird supports_join gesetzt, was ein NS-Feld ist, das einen NS-Treffer zum Erstellen/Aktualisieren auslöst
  • Beim Erstellen des Geräts wird NS trotzdem getroffen
  • NS erfordert jedoch die Einstellung eines Geräteprofils, dh LoRaWAN MAC- und PHY-Versionen

Was möchtest du stattdessen sehen?

Ich möchte Geräte nur in JS erstellen können

Wie wollen Sie dies umsetzen?

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.

Können Sie dies selbst tun und einen Pull Request senden?

Werde es überprüfen

bug in progress ucli

Alle 6 Kommentare

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!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

thinkOfaNumber picture thinkOfaNumber  ·  4Kommentare

adriansmares picture adriansmares  ·  9Kommentare

adriansmares picture adriansmares  ·  8Kommentare

kschiffer picture kschiffer  ·  4Kommentare

johanstokking picture johanstokking  ·  5Kommentare