يتطلب CLI NS و AS لإنشاء الأجهزة في 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
تم تعيين supports_join
، وهو حقل NS ، مما يؤدي إلى ظهور نتيجة NS للإنشاء / التحديثأريد أن أكون قادرًا على إنشاء أجهزة في JS فقط
فرض CLI على عدم استدعاء JS / NS / AS. هذا مشابه لوحدة التحكم ، حيث نقوم بتعطيل الوظائف عندما لا يكون المكون موجودًا.
سيستعرض
أيضًا ، يتطلب 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 أيضًا ، فهو يعمل مع إصدار MAC المحدد من NS في تدفق الانضمام.
لا أعتقد أنه من الجيد النظر إلى تهيئة العنوان عند تحديد مكان إنشاء الأجهزة الطرفية ، فمن السهل جدًا ارتكاب أخطاء في ذلك (عند نسيان تكوين var). يعد تخطي إنشاء الجهاز النهائي على أنواع خوادم معينة حالة استخدام خاصة تستحق إشارات صريحة ، ولا يجب تحديدها ضمنًا عند حذف تهيئة معينة (ربما عن طريق الخطأ).
تعد إزالة إصدار MAC خارج نطاق IMO لهذه المشكلة ويجب مناقشتها مع rvolosatovs قبل المضي قدمًا في ذلك.
يعد تخطي إنشاء الجهاز النهائي على أنواع خوادم معينة حالة استخدام خاصة تستحق إشارات صريحة ، ولا يجب تحديدها ضمنًا عند حذف تهيئة معينة (ربما عن طريق الخطأ).
لا يُعد AS المستقل و JS المستقل حالات استخدام خاصة. دعنا نذهب إلى bools الممكنة لكل مكون ، ثم ، مثل Console ، افتراضيًا true
.
فيما يتعلق بـ lorawan_version
- أتفق مع johanstokking ، فنحن نحتاجها فقط في CLI لإنشاء أجهزة ABP ، لذلك لا يوجد سبب
أعلام bool
تبدو جيدة!