Lorawan-stack: يتطلب CLI NS و AS لإنشاء الأجهزة في JS

تم إنشاؤها على ٢١ يونيو ٢٠١٩  ·  6تعليقات  ·  مصدر: TheThingsNetwork/lorawan-stack

ملخص

يتطلب CLI NS و AS لإنشاء الأجهزة في JS

خطوات التكاثر

  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 تم تعيين supports_join ، وهو حقل NS ، مما يؤدي إلى ظهور نتيجة NS للإنشاء / التحديث
  • عند إنشاء الجهاز ، يتم ضرب NS على أي حال
  • لكن NS يتطلب تعيين ملف تعريف للجهاز ، أي إصدارات LoRaWAN MAC و 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 أيضًا ، فهو يعمل مع إصدار MAC المحدد من NS في تدفق الانضمام.

لا أعتقد أنه من الجيد النظر إلى تهيئة العنوان عند تحديد مكان إنشاء الأجهزة الطرفية ، فمن السهل جدًا ارتكاب أخطاء في ذلك (عند نسيان تكوين var). يعد تخطي إنشاء الجهاز النهائي على أنواع خوادم معينة حالة استخدام خاصة تستحق إشارات صريحة ، ولا يجب تحديدها ضمنًا عند حذف تهيئة معينة (ربما عن طريق الخطأ).


تعد إزالة إصدار MAC خارج نطاق IMO لهذه المشكلة ويجب مناقشتها مع rvolosatovs قبل المضي قدمًا في ذلك.

يعد تخطي إنشاء الجهاز النهائي على أنواع خوادم معينة حالة استخدام خاصة تستحق إشارات صريحة ، ولا يجب تحديدها ضمنًا عند حذف تهيئة معينة (ربما عن طريق الخطأ).

لا يُعد AS المستقل و JS المستقل حالات استخدام خاصة. دعنا نذهب إلى bools الممكنة لكل مكون ، ثم ، مثل Console ، افتراضيًا true .

فيما يتعلق بـ lorawan_version - أتفق مع johanstokking ، فنحن نحتاجها فقط في CLI لإنشاء أجهزة ABP ، لذلك لا يوجد سبب
أعلام bool تبدو جيدة!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

bafonins picture bafonins  ·  5تعليقات

johanstokking picture johanstokking  ·  8تعليقات

johanstokking picture johanstokking  ·  5تعليقات

johanstokking picture johanstokking  ·  3تعليقات

ecities picture ecities  ·  5تعليقات