Lorawan-stack: CLIでは、JSでデバイスを作成するためにNSとASが必要です

作成日 2019年06月21日  ·  6コメント  ·  ソース: TheThingsNetwork/lorawan-stack

概要

CLIでは、JSでデバイスを作成するためにNSとASが必要です

再現する手順

  1. 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が設定されていないため、NSフィールドであるsupports_joinが設定され、作成/更新のNSヒットがトリガーされます。
  • デバイスの作成時に、 NSはとにかくヒットします
  • ただし、NSではデバイスプロファイルを設定する必要があります。つまり、LoRaWANMACおよびPHYバージョンです。

代わりに何を見たいですか?

JSでのみデバイスを作成できるようにしたい

これをどのように実装することを提案しますか?

CLIにJS / NS / ASを呼び出さないように強制します。 これは、コンポーネントが存在しないときに機能を無効にするコンソールに似ています。

これを自分で行い、プルリクエストを送信できますか?

レビューします

bug in progress ucli

全てのコメント6件

また、CLIでは現在すべての状況でlorawan_versionを設定する必要がありますが、セッションキーを検証するためのABPデバイスを作成する場合にのみ必要です。 提案;

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

--skip-is 、) --skip-ns--skip-as--skip-jsフラグを追加して、上級ユーザーが作成/更新をスキップできるようにすることも考えられます。 (IS /)NS / AS / JS。 --skip-isは少し注意が必要かもしれませんが、作成には許可しないでください。

私の知る限り、MACバージョンはOTAAデバイスにも非常に役立ちます。 今でなければ、将来も持っておく価値があるので、そのままにしておくのが賢明だと思います。

--skip-is 、) --skip-ns--skip-as--skip-jsフラグを追加して、上級ユーザーが作成/更新をスキップできるようにすることも考えられます。 (IS /)NS / AS / JS。 --skip-isは少し注意が必要かもしれませんが、作成には許可しないでください。

関係する..._grpc_addressが空の場合、それらをスキップするのはどうですか?

私の知る限り、MACバージョンはOTAAデバイスにも非常に役立ちます。 今でなければ、将来も持っておく価値があるので、そのままにしておくのが賢明だと思います。

JSでデバイスをプロビジョニングする場合、たとえば、エンドデバイスのファームウェアが選択されるずっと前に安全な要素をプロビジョニングする場合などは不明です。 JSはMACバージョンも気にせず、結合フローでNSから選択されたMACバージョンで動作します。

エンドデバイスを作成する場所を決定するときにアドレス構成を確認するのは良い考えではないと思います。それを間違えるのは簡単すぎます(環境変数の構成を忘れた場合)。 特定のサーバータイプでのエンドデバイスの作成をスキップすることは、明示的なフラグに値する特別な使用例であり、特定の構成が省略された場合(おそらく偶然)に暗黙的に決定されるべきではありません。


MACバージョンの削除は、この問題の範囲外のIMOであり、先に進む前に

特定のサーバータイプでのエンドデバイスの作成をスキップすることは、明示的なフラグに値する特別な使用例であり、特定の構成が省略された場合(おそらく偶然)に暗黙的に決定されるべきではありません。

スタンドアロンASとスタンドアロンJSは特別な使用例ではありません。 コンポーネントごとに有効なboolを探してみましょう。次に、コンソールのように、デフォルトでtrueです。

lorawan_version - @ johanstokkingに同意します。これは、CLIでABPデバイスを作成するためにのみ必要なので、必要とする理由はありません。
boolフラグはいいですね!

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

johanstokking picture johanstokking  ·  3コメント

htdvisser picture htdvisser  ·  4コメント

kschiffer picture kschiffer  ·  7コメント

rvolosatovs picture rvolosatovs  ·  9コメント

johanstokking picture johanstokking  ·  5コメント