ملخص:
نموذج إضافة جهاز (تمت إضافته في # 573) لا يؤلف حاليًا حقولًا استنادًا إلى قيود (باستثناء تحديد ABP / OTAA). على سبيل المثال ، يمكنه إخفاء الحقول ذات الصلة فقط بإصدارات LoRaWAN المحددة ، أو إعادة تسمية الحقول وفقًا لذلك (على سبيل المثال ، NwkSKey
مقابل FNwkSIntKey
).
لماذا نحتاج هذا؟
لتحسين تجربة المستخدم ، تجنب المدخلات المعيبة
ما هو موجود بالفعل؟
نموذج إضافة جهاز ، مع الحقول الشرطية بناءً على OTAA / ABP
ما المفقود؟
تم تطبيق عمليات فحص وقيود أكثر تعقيدًا في النموذج ، مما يمنع المدخلات المعيبة
بيئة:
وحدة التحكم في المتصفح
كيف تقترح تنفيذ ذلك؟
من المرجح أن ترتبط بأحداث التغيير الميداني وأنشئ الحقول وفقًا لذلك
هل يمكنك القيام بذلك بنفسك وإرسال طلب سحب؟
نعم.
المشكلة الرئيسية في التنفيذ الحالي لشكل الجهاز هي أن كل شيء مرتبط ببعضه البعض. هذه تسبب
أقترح تنفيذ نموذج الجهاز باعتباره نموذجًا متعدد الخطوات. يمكن أن يبدو هذا كالتالي:
هذا النهج يعالج جميع القضايا المذكورة أعلاه:
Join EUI
إلى App EUI
لإصدار lorawan 1.0.x
.يمكن تنفيذ أجهزة التحرير ككومة من الأكورديونات:
حيث يتمدد كل أكورديون بشكل مستقل.
إلى جانب نموذج الجهاز ، يمكننا استخدام المعالج لاستمارة الطلب أيضًا من أجل:
cckschifferjohanstokkinghtdvisser _ _
يبدو هذا جيدًا بالنسبة لي ، خاصةً إذا كان بإمكاننا تجميع حقول المكونات معًا في خطوة. بهذه الطريقة ، يمكننا ببساطة تخطي / تعطيل الخطوات عندما لا يتوفر أحد المكونات.
الرجوع إلى https://github.com/TheThingsNetwork/lorawan-stack/issues/1234 أيضًا ؛ حتى في حالة توفر JS ، يمكن للمستخدم تخطي حقول JS.
لقد توصلت إلى مثل هذا الرسم التخطيطي:
كل عقدة هي خطوة
يبدو الأمر معقدًا ، لكن التنفيذ الحالي به مساحة حالة أكبر فيما يتعلق بالتحقق من الصحة / التقديم / إنشاء قناع المجال / إلخ.
اعتبر الرسم البياني بمثابة اقتراح أولي لبدء المناقشة.
أعتقد أن هذه بداية جيدة.
وبعض الأشياء الصغيرة:
DevEUI
لأجهزة ABP (يمكن تعيينه اختياريًا)NwkKey
، فقط AppKey
FNwkSIntKey
يسمى NwkSKey
(تجاه المستخدم)NwkKey
أو AppKey
نعم ، بداية رائعة.
- ربما يكون التدفق أفضل إذا جاء خادم الانضمام أولاً.
أنا أتفق مع هذا. إذا كان وضع التنشيط هو OTAA وتم تمكين المجموعة JS ، فيحصل المستخدمون على صفحة JS على خيار إدخال مفاتيح الجذر وتخزينها على المجموعة JS. (إذا قاموا بتعطيل ذلك ، يستخدم NS بحث JS ، تمامًا كما هو الحال عند عدم تمكين JS في المجموعة)
multicast bool
و supports_join bool
. هناك 3 خيارات ممكنة ، لأن multicast && supports_join
غير صالح.frequency_plan
-> frequency_plan_id
resets_f_cnt
اختياري ، false
افتراضيًا.
يجب تقديم FNwkSIntKey
كـ NwkKey
فقط لـ <1.1
FNwkSIntKey
مفقود في إعدادات ABP NS لـ> = 1.1multicast
تحتاج فقط AppSKey
- NS لا تحتاج إلى أي مفاتيح للأجهزة multicast
لتعمل ، فقط ASتضمين التغريدة
ربما يكون التدفق أفضل إذا جاء خادم الانضمام أولاً.
لماذا ا؟
من الأمور المهمة التي لم نحرز أي تقدم بشأنها حتى الآن هو الملء المسبق للحقول من قوالب الجهاز في مستودع الجهاز رقم 263. أعتقد أن هذا يمكن أن يبسط بالفعل عملية نشر الإنتاج.
بالنسبة لي يبدو خارج نطاق هذه المسألة
لا يُحظر استخدام DevEUI لأجهزة ABP (يمكن ضبطه اختياريًا)
هل نريد ضبطه لأجهزة ABP أيضًا؟ أود أن أقول أنه كلما قل عدد الحقول التي لدينا ، كان ذلك أفضل. ومع ذلك ، فمن الضروري أن نضيفه.
يسمى FNwkSIntKey NwkSKey (تجاه المستخدم)
لذا يجب أن تكون التسمية NwkSKey
لكل من 1.0.x و 1.1.x؟ إليك ما لدينا من أجهزة الصراف الآلي في وحدة التحكم:
- لا تحتوي أجهزة LoRaWAN 1.0.x على NwkKey ، فقط AppKey
- لا يحصل خادم التطبيق على NwkKey أو AppKey
ثابت 👌
تضمين التغريدة
إذا كان وضع التنشيط هو OTAA وتم تمكين المجموعة JS ، فيحصل المستخدمون على صفحة JS على خيار إدخال مفاتيح الجذر وتخزينها على المجموعة JS. (إذا قاموا بتعطيل ذلك ، يستخدم NS بحث JS ، تمامًا كما هو الحال عند عدم تمكين JS في المجموعة).
إذن هذه مجرد مسألة السماح للمستخدمين بتخطي خطوة إرسال خادم الانضمام؟ لا توجد طلبات لشبيبة على الإطلاق؟
بخصوص https://github.com/TheThingsNetwork/lorawan-stack/issues/1134 ، هل يمكنك أيضًا تحديد مكان هذه الحقول في الرسم التخطيطي؟
تضمين التغريدة
وضع التنشيط "في الحمولة - في الرسم التخطيطي الخاص بك يتوافق بالفعل مع حقلين - منطقي متعدد البث ويدعم منطقي الدعم. هناك 3 خيارات ممكنة ، نظرًا لأن الإرسال المتعدد && support_join غير صالح.
فقط للتوضيح:
supports_join=true
- أوتاsupports_join=false
- ABPmulticast=true && **no** supports_join
- إرسال متعددresets_f_cnt اختياري ، خطأ افتراضيًا.
أعتقد أنه لا يزال من الجيد إظهارها للمستخدمين. هل ينبغي السماح للمستخدمين بضبطه لأجهزة البث المتعدد؟
يجب تقديم FNwkSIntKey على أنه NwkKey فقط لـ <1.1
تقصد NwkSKey
؟
frequency_plan -> frequency_plan_id
FNwkSIntKey مفقود في إعدادات ABP NS لـ> = 1.1
ثابت 👌
الرسم التخطيطي المحدث:
تضمين التغريدة
ربما يكون التدفق أفضل إذا جاء خادم الانضمام أولاً.
لماذا ا؟
نعم ، سأعود إلى هذا ؛ أعتقد أنه من المنطقي إدخال إصدارات MAC قبل إدخال المفاتيح. لذلك أنا أدعم التدفق الحالي. إذا تم إدخال إصدار MAC (عند تمكين NS) ، فلن نضطر إلى طلب NwkKey
لأن هذا 1.1.x.
من الأمور المهمة التي لم نحرز أي تقدم بشأنها حتى الآن هو الملء المسبق للحقول من قوالب الجهاز في مستودع الجهاز رقم 263. أعتقد أن هذا يمكن أن يبسط بالفعل عملية نشر الإنتاج.
بالنسبة لي يبدو خارج نطاق هذه المسألة
إنه خارج النطاق بالفعل.
لا يُحظر استخدام DevEUI لأجهزة ABP (يمكن ضبطه اختياريًا)
هل نريد ضبطه لأجهزة ABP أيضًا؟ أود أن أقول أنه كلما قل عدد الحقول التي لدينا ، كان ذلك أفضل. ومع ذلك ، فمن الضروري أن نضيفه.
نعم ، نريد أن نطلبها اختياريًا. كلما زادت معلومات التعريف التي لدينا حول الأجهزة الطرفية ، كان ذلك أفضل. وهو مطلوب أيضًا في التجوال السلبي ذي الحالة. السبب في أننا لا نجبر المستخدمين على إدخال DevEUI ، هو أنه في حالة عدم وجود DevEUI ، فإننا لا نريد أن يقوم المستخدمون بإدخال قيم زائفة.
يسمى FNwkSIntKey NwkSKey (تجاه المستخدم)
لذا يجب أن تكون التسمية
NwkSKey
لكلٍّ من 1.0.x و 1.1.x؟ إليك ما لدينا من أجهزة الصراف الآلي في وحدة التحكم:
إنه NwkSKey
لـ 1.0.x و FNwkSIntKey
لـ 1.1.x.
إذا كان وضع التنشيط هو OTAA وتم تمكين المجموعة JS ، فيحصل المستخدمون على صفحة JS على خيار إدخال مفاتيح الجذر وتخزينها على المجموعة JS. (إذا قاموا بتعطيل ذلك ، يستخدم NS بحث JS ، تمامًا كما هو الحال عند عدم تمكين JS في المجموعة).
إذن هذه مجرد مسألة السماح للمستخدمين بتخطي خطوة إرسال خادم الانضمام؟ لا توجد طلبات لشبيبة على الإطلاق؟
في الواقع.
مثال على ذلك جهاز يتميز بمودم Semtech الذي يستخدم Semtech Join Server. نحتاج فقط إلى معرفة EUIs في هذه الحالة.
فيما يتعلق بالرقم 1134 ، هل يمكنك أيضًا تحديد مكان هذه الحقول في الرسم التخطيطي؟
إنهم ينتمون إلى خطوة JS ؛ هذه الحقول لتذهب إلى JS ، إذا تم تمكين JS في الكتلة وإذا كان المستخدم يريد توفير الأجهزة على JS.
هذه الحقول اختيارية.
فقط للتوضيح:
supports_join=true
- أوتاsupports_join=false
- ABPmulticast=true && **no** supports_join
- إرسال متعدد
هل هذا صحيح؟
بشكل صارم:
supports_join
!supports_join && !multicast
multicast
غير صالح هو supports_join && multicast
، لكن هذا (أو يجب التحقق منه) في NS.
resets_f_cnt اختياري ، خطأ افتراضيًا.
أعتقد أنه لا يزال من الجيد إظهارها للمستخدمين. هل ينبغي السماح للمستخدمين بضبطه لأجهزة البث المتعدد؟
لا ، هذا ليس للبث المتعدد. يشير resets_f_cnt
إلى الوصلة الصاعدة ، ولكن لا يوجد ارتباط في الإرسال المتعدد.
يجب تقديم FNwkSIntKey على أنه NwkKey فقط لـ <1.1
تقصد
NwkSKey
؟
يجب أن يكون NwkSKey
بالفعل.
bafonins يرجى الاطلاع على إجابة johanstokking .
فيما يتعلق بـ multicast
- مطلوب عنوان الجهاز أيضًا
DevEUI
لأجهزة abp / البث المتعددDevice Address
لأجهزة البث المتعددلا يزال عنوان الجهاز مفقودًا من إعدادات خادم الشبكة multicast
device
لا يزال عنوان الجهاز مفقودًا من إعدادات خادم الشبكة الخاصة بجهاز الإرسال المتعدد
تم التحديث 👌
يمكن أن يكون البث المتعدد 1.0.x و 1.1.x. إدخال معلومات الجلسة ( DevAddr
and keys) هو نفسه بالنسبة إلى الإرسال المتعدد كما في ABP.
يمكن أيضًا تعيين resets_join_nonces
في JS بـ 1.1.x
هناك حاجة بالتأكيد إلى تقسيم إنشاء الجهاز وطريقة لطيفة لجعل التدفق والتنفيذ أقرب إلى متطلبات الواجهة الخلفية ، مع تقليل التعقيد بالنسبة للمستخدم.
بعض الأفكار والتحديات التي أراها:
التعقيد غير الضروري في js sdk للإنشاء / التحديث / الحذف المجمّع وكذلك إنشاء منطق التراجع
أعتقد أن الوظيفة الموجودة في SDK لتقسيم طلبات الجهاز ودمجها لا تزال ذات قيمة كبيرة ، حتى لو لم نستخدمها في هذه الحالة
johanstokking لأجهزة البث المتعدد يحتاج NS فقط إلى SNwkSIntKey
في 1.1 لحساب MIC. في الواقع ، لا ينبغي السماح لـ FNwkSIntKey
و NwkSEncKey
بتعيين IMO.
- يجب أن نضيف وظائف لإجهاض التدفق بالكامل ، مما يؤدي إلى حذف أي إدخالات تسجيل تم إنشاؤها بالفعل.
- وبالمثل ، فإن الانتقال إلى الخطوة السابقة يحتاج إلى وضع النموذج في "وضع التحديث" (يجب أن يكون سهلاً نسبيًا لأن نقاط النهاية هي نفسها ، باستثناء IS)
لا أعتقد أننا يجب أن نصنع أي شيء قبل أن نضغط على Finish أو شيء من هذا القبيل. لا ينبغي أن يؤدي التنقل ذهابًا وإيابًا في المعالج وإغلاق نافذة المتصفح إلى إنشاء نصف أجهزة.
- إحدى المشكلات التي أراها هي أن خطوة خادم التطبيق ضحلة جدًا (هل من المحتمل أن يتغير هذا لاحقًا؟) وإضافة خيارات تنسيق الحمولة هناك أيضًا لا تتماشى مع احتياجات المستخدم أثناء إنشاء الجهاز.
سنضيف التكوين لحزم التطبيق هنا (على سبيل المثال ، إعداد البث المتعدد عن بعد ، نقل كتلة البيانات المجزأة ، خيارات مودم Semtech ، إلخ). لذا نعم ، إنها ضحلة الآن ولكنها ستمتد.
- قد يكون الحل هو دمج خطوة AS و JS نظرًا لأن كلاهما واضح ومباشر ولا يعتمدان على بعضهما البعض. أدرك أن هذا يتعارض مع الفصل حسب المكون ، لكنني أعتقد أن هذا من شأنه أن يبسط التدفق بأكمله بتجريد معقول. خاصة وأننا لا ننقل أي اتصال بمكونات المكدس المعنية ضمن الخطوات.
من أجل أنفسنا في المستقبل ، أوصي بإبقائهم منفصلين. كما أن دمجها يجعل عرض الأشياء على تلك الصفحات مشروطًا بتوفر المكون الذي يضيف تعقيدًا إلى تدفق معقد بالفعل.
اعتمادًا على تكوين المكدس ، قد ينتهي بنا الأمر بمعالج يحتوي على خطوة أو خطوتين فقط ، وهو نمط مضاد للمعالجات.
- في حالة خطوة واحدة فقط ، يمكننا ببساطة إخفاء / إزالة جانب المعالج
- لخطوتين ، أعتقد أننا يجب أن نتعايش مع المشكلة 🤷♂
يجب أن يؤخذ في الاعتبار أن حل المعالج سيزيد من _وقت_الإكمال_ لقصة المستخدم قليلاً
- قد يصبح هذا مشكلة في المواقف التي يلزم فيها إنشاء الكثير من الأجهزة يدويًا ، على الرغم من أننا سنقدم ميزات إنشاء الدُفعات لحالة الاستخدام هذه ويمكن أن يساعد CLI / البرمجة النصية في مثل هذه المواقف أيضًا
- ومع ذلك ، ضع في اعتبارك الاختلاف مع إنشاء جهاز وحدة التحكم V2 وكيف يمكن للمستخدمين إدراك هذا التغيير
يعد فصل المكونات وسيناريوهات النشر المرنة أحد التغييرات الرئيسية مقارنةً بـ V2 ، لذلك فمن المنطقي تمامًا أن هذا فعال في وحدة التحكم V3.
في الواقع ، لإنشاء كميات كبيرة من الأجهزة ، يجب على الأشخاص استخدام واجهات برمجة التطبيقات (API) و CLI على أي حال.
لا يوجد سيناريو بخطوة واحدة ، فهو دائمًا خطوتان على الأقل.
ماذا عن تقديم علامات التبويب بدلاً من الصفحات؟ بهذه الطريقة تظل صفحة واحدة ولكن يمكن الوصول إلى الأشياء بسهولة دون الانتقال ذهابًا وإيابًا في خطوات.
تضمين التغريدة
لا أعتقد أننا يجب أن نصنع أي شيء قبل أن نضغط على Finish أو شيء من هذا القبيل.
إذا قدمنا الطلب الفعلي في الخطوة الأخيرة فقط ، فهذا يعني أننا سنقدم 3-4 طلبات. كيف نتعامل مع الأخطاء التي ترجعها المكونات المختلفة؟ التعامل مع هذا ، وتوجيه المستخدم إلى الخطوة الخطأ / إعادة تعيين المتجر / إلخ. معقد. لهذا السبب أقترح إرسال القيم في كل خطوة ، لأن كل خطوة متتالية يمكن أن تعتمد على القيم المقدمة باعتبارها صالحة.
لا ينبغي أن يؤدي التنقل ذهابًا وإيابًا في المعالج وإغلاق نافذة المتصفح إلى إنشاء نصف أجهزة.
أنا ضد السماح للمستخدمين بتحرير البيانات في المعالج (للخطوات التي تؤدي إلى الإرسال). ميغابايت ، الحقول الاختيارية فقط المخزنة في مكون واحد (ولا تحتاج أي مكونات أخرى إلى ذلك) ، على سبيل المثال name
، description
. وإلا فإن التعامل مع هذا الأمر يصبح معقدًا للغاية.
تضمين التغريدة
اعتمادًا على تكوين المكدس ، قد ينتهي بنا الأمر بمعالج يحتوي على خطوة أو خطوتين فقط ، وهو نمط مضاد للمعالجات.
حسنًا ، نحن منفتحون على الحلول البديلة. أي مقترحات؟
إذا قدمنا الطلب الفعلي في الخطوة الأخيرة فقط ، فهذا يعني أننا سنقدم 3-4 طلبات. كيف نتعامل مع الأخطاء التي ترجعها المكونات المختلفة؟ التعامل مع هذا ، وتوجيه المستخدم إلى الخطوة الخطأ / إعادة تعيين المتجر / إلخ. معقد. لهذا السبب أقترح إرسال القيم في كل خطوة ، لأن كل خطوة متتالية يمكن أن تعتمد على القيم المقدمة باعتبارها صالحة.
نعم. لا بأس بذلك ، طالما أن وحدة التحكم يمكنها التعامل مع الأجهزة الموجودة في التقارير الإلكترونية ولكن لا يمكن العثور عليها في JS / NS / AS بسبب فشل هذه الخطوة أو قيام المستخدم بإغلاق علامة التبويب أو شيء من هذا القبيل.
أنا ضد السماح للمستخدمين بتحرير البيانات في المعالج (للخطوات التي تؤدي إلى الإرسال). ميغابايت ، الحقول الاختيارية فقط المخزنة في مكون واحد (ولا تحتاج أي مكونات أخرى إلى ذلك) ، على سبيل المثال
name
،description
. وإلا فإن التعامل مع هذا الأمر يصبح معقدًا للغاية.
ماذا تقصد؟
لاحظ أن AS ، على سبيل المثال ، لا يحتاج إلى أي حقول ، إنه يحتاج فقط إلى وجود الجهاز. لذلك إذا كان AS موجودًا ، حتى إذا لم يقم المستخدم بإدخال أي قيم لـ AS ، فلا يزال يتعين عليه إنشاء جهاز (فارغ) في AS.
ماذا تقصد؟
آسف. كان هذا تجاه اقتراح kschiffer :
وبالمثل ، فإن الانتقال إلى الخطوة السابقة يحتاج إلى وضع النموذج في "وضع التحديث" (يجب أن يكون سهلاً نسبيًا لأن نقاط النهاية هي نفسها ، باستثناء IS)
لا ينبغي أن يؤدي التنقل ذهابًا وإيابًا في المعالج وإغلاق نافذة المتصفح إلى إنشاء نصف أجهزة.
سأعتبر هذا بمثابة تحسين مستقبلي. في الوقت الحالي ، يمكننا فقط إظهار إشعار للمستخدم بشأن التدفق غير المكتمل. لاحقًا ، يمكن للمستخدم تعديل / حذف الجهاز في صفحة الإعدادات العامة.
حسنًا ، نحن منفتحون على الحلول البديلة. أي مقترحات؟
حسنًا ، أعتقد أنه نظرًا لخطورة هذا الموقف بالذات ، فلا بأس من التعايش مع هذه المشكلة. تشير صياغتك إلى أنه لا ينبغي أن أذكر المخاوف بدون حلول مقترحة ، لكني أحب أن أعطي للآخرين الفرصة للتوصل إلى بعضها إذا لم أجد أيًا منها على الفور.
أنا ضد السماح للمستخدمين بتحرير البيانات في المعالج (للخطوات التي تؤدي إلى الإرسال). ميغابايت ، الحقول الاختيارية فقط المخزنة في مكون واحد (ولا تحتاج أي مكونات أخرى إلى ذلك) ، على سبيل المثال
name
،description
. وإلا فإن التعامل مع هذا الأمر يصبح معقدًا للغاية.
سيؤدي هذا مرة أخرى إلى قطع أفضل الممارسات لنمط المعالج. من المرجح أن يرغب المستخدمون في مراجعة الحقول السابقة أو فحصها ببساطة ، لا سيما بالنظر إلى أن هذه الحقول مترابطة. أنا موافق على عدم تضمين هذه الوظيفة في البداية ، ولكن يجب إضافتها في النهاية (كما في: تتبع في مشكلة).
وإلا فإن التعامل مع هذا الأمر يصبح معقدًا للغاية.
بشكل عام ، يجب ألا تؤثر ضرورة تنفيذ منطق الواجهة الأمامية المعقد على التزامنا بتجربة المستخدم.
سأعتبر هذا بمثابة تحسين مستقبلي. في الوقت الحالي ، يمكننا فقط إظهار إشعار للمستخدم بشأن التدفق غير المكتمل. لاحقًا ، يمكن للمستخدم تعديل / حذف الجهاز في صفحة الإعدادات العامة.
ليس الأمر الأمثل ولكنه مقبول بالنسبة لي ، طالما أننا سنعزز ذلك في النهاية.
كما تمت مناقشته في وضع عدم الاتصال ، إليك الاقتراح الأولي ؛
ids
name
description
attributes
lorawan_version
lorawan_phy_version
إعدادات LoRaWAN
lorawan_version
(مطلوب)lorawan_phy_version
(مطلوب)supports_join
إذا كان وضع التنشيط هو OTAA (مطلوب)multicast
اضبط إذا كان وضع التنشيط متعدد البثsupports_class_b
supports_class_c
frequency_plan_id
(مطلوب)mac_settings.supports_32_bit_f_cnt
mac_settings.factory_preset_frequencies
mac_settings.ping_slot_data_rate_index.value
mac_settings.ping_slot_frequency
mac_settings.ping_slot_periodicity.value
mac_settings.rx2_data_rate_index.value
min_frequency
max_frequency
session.dev_addr
session.keys.session_key_id
session.keys.f_nwk_s_int_key.key
- مطلوبsession.keys.s_nwk_s_int_key.key
(إذا كان LW> = 1.1.0) - مطلوبsession.keys.nwk_s_enc_key.key
(إذا كان LW> = 1.1.0) - مطلوبsession.keys.app_s_key.key
- مطلوبsession.last_conf_f_cnt_down
session.last_n_f_cnt_down
mac_settings.resets_f_cnt
session.last_f_cnt_up
- هذا مطلوب للأمانإذا كان NS في المجموعة: الحقول إذا كان وضع التنشيط هو ABP أو OTAA
mac_settings.adr_margin
mac_settings.class_b_timeout
mac_settings.class_c_timeout
mac_settings.desired_adr_ack_delay_exponent.value
mac_settings.desired_adr_ack_limit_exponent.value
mac_settings.desired_max_duty_cycle.value
mac_settings.desired_rx1_data_rate_offset
mac_settings.desired_rx1_delay.value
mac_settings.desired_rx2_data_rate_index.value
mac_settings.desired_rx2_frequency
mac_settings.max_duty_cycle.value
mac_settings.rx1_data_rate_offset
mac_settings.rx1_delay.value
mac_settings.status_count_periodicity
mac_settings.status_time_periodicity
mac_settings.supports_32_bit_f_cnt
mac_settings.use_adr
يقوم هذا بتعيين الجهاز في NS و AS (إذا كان في المجموعة). إذا كان لدينا جهاز OTAA ، فليس لدينا أي شيء لضبطه في AS في هذه المرحلة ، لكنني ما زلت أقوم بالدعوة إلى الاتساق
payload_formatters
root_keys.root_key_id
root_keys.app_key.key
root_keys.nwk_key.key
(إذا كان LW> = 1.1.0)resets_join_nonces
home_net_id
network_server_kek_label
application_server_kek_label
application_server_id
هنا ، سأذهب مع نهج مبوب ، بشكل أساسي مع خطوات المعالج كعلامات تبويب.
المفتاح هنا هو ذلك ؛
ids
، supports_join
، multicast
للقراءة فقطsupports_join
!supports_join && !multicast
!supports_join && multicast
(على الرغم من أن multicast
يجب أن يكون كافيًا)بعض حالات الاستخدام لدعم تحديث الأجهزة:
lorawan_version
و lorawan_phy_version
(هذا يغير القيود)root_keys != nil
) لكنها غير مكشوفة ( root_keys.app_key == null
إلخ). يجب أن يكون المستخدم قادرًا على ترك مفاتيح الجذر سليمةأعتقد أن https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -525719408 يحتوي بالفعل على كل ما هو ضروري لـ NS.
أعتقد أن كل mac_settings
يجب أن يكون متاحًا ليتم تعيينه لجميع الأجهزة غير ذات البث المتعدد.
بالنسبة لأجهزة البث المتعدد ، يكون ما يلي هو المعنى فقط:
ربما بعض الأشياء لتوضيح
خلق:
supports_class_b
؟تحديث:
true
، أو إعادة تعيين حالة الجهاز في NSالاشياء العامة:
إذا كنا نتحدث عن حقول المستوى الأعلى:
https://github.com/TheThingsNetwork/lorawan-stack/blob/375c82cc068bbadb72b887e25631f8f2dc03a366/api/end_device.proto#L395 -L418 ينتمي هذا الجزء بالكامل إلى NS (ولكن ليس كل هذه العناصر مطلوبة)
لا ينطبق m{in,ax}_frequency
على البث المتعدد
تضمين التغريدة
أعتقد أن رقم 579 (تعليق) يحتوي بالفعل على كل ما هو ضروري لـ NS.
أعتقد أن كل
mac_settings
يجب أن يكون متاحًا ليتم تعيينه لجميع الأجهزة غير ذات البث المتعدد.
بالنسبة لأجهزة البث المتعدد ، يكون ما يلي هو المعنى فقط:
إحدى المشكلات المتعلقة بهذه المشكلة هي كمية المعلومات المدفونة في التعليقات.
هل يمكنك إضافة الحقول الصحيحة في الأماكن الصحيحة من فضلك؟ أنا بخير إذا قمت بنسخ قائمة النقاط الكاملة الخاصة بي ، لذلك نعمل بشكل متزايد على ذلك حتى يكون لدينا نسخة نهائية.
تضمين التغريدة
- الاعدادات العامة
أ. عندما نقوم بإنشاء الجهاز في ER ، لا نقوم بتعيين عناوين NS / AS / JS. هل نقوم بتحديث تسجيل ER عندما يتم تعيين الجهاز في تلك؟ ماذا لو كنا نستخدم JS خارجي؟
أعتقد أنه يجب علينا تحديث العناوين عندما نقوم بتعيين الأجهزة في AS / NS / JS.
ب. هل نقوم بتخزين وضع التنشيط في ER؟
لا ، ليس لدينا مجال لذلك في الوقت الحالي ، ولسنا في حاجة إليه حقًا ويخلق مجالًا للتناقضات.
ج. هل نقوم بتخزين إصدارات phy / mac في ER؟
لا ، انظر وثائق API. مرة أخرى ، لا أرى الحاجة ويخلق مجالًا للتناقضات.
أ. ماذا عن
supports_class_b
؟
نعم أعتقد أنه يجب علينا إضافة ذلك ، المعلق رقم 19. rvolosatovs يرجى تضمين هذا في نسخة محدثة إذا كان ذلك مناسبًا.
- إعدادات التطبيق
أ. نعم ، قد يعني هذا أننا قمنا بتعيين الجهاز على AS مرتين
نعم ، هذا لا يضر
تحديث:
- وضع التنشيط: سيكون أسهل كثيرًا إذا قمنا بتخزينه في ER
نعم ، لكني لست متأكدًا مما إذا كان ينبغي أن نذهب من أجل السهولة وما إذا كان ذلك ينطبق تمامًا. نحن بحاجة إلى توفيره في المسار الساخن.
أيضًا ، سيكون الأمر سهلاً فقط إذا تمكنا من البدء من سجل نظيف. ومع ذلك ، نحتاج إلى أن نكون متوافقين مع الإصدارات السابقة ، مع إضافة الاستدلال عندما لا يكون lorawan_version
في ER ، وتقديم يحصل الشرطي من NS وما إلى ذلك.
- هل ننظر فقط إلى 404 أم أيضًا في عناوين NS / AS / JS في ER؟
لا يمكننا الحصول على 404 إلا إذا كان هناك عنوان معين ، وإلا فلن يكون هناك شيء يمكن الحصول عليه. يجب أن نفسر كلاهما على أنهما "ليس في ذلك السجل". لا يمكننا الخطأ هنا (كما فعلنا من قبل) ، بالضبط بسبب عدم حدوث الإنشاء في IS و AS / NS / JS في نفس الوقت ، ويجب أن يكون المستخدمون قادرين على استعادة التناقضات التي أنشأتها وحدة التحكم.
- أعتقد أنه سيكون من الجيد أن تكون قادرًا على حذف تسجيل NS / AS / JS فردي على سبيل المثال عند تغيير "JS خارجي" إلى
true
، أو إعادة تعيين حالة الجهاز في NS
نعم ، لنفعل ذلك لاحقًا
- _ "JS الخارجية هو المكان الذي لا يكون فيه JS في نفس المجموعة مثل NS" _: أعتقد أن هذا يجب أن يكون شيئًا مثل "Join_server_address ليس هو نفسه عنوان JS في تهيئة وحدة التحكم"
نعم ، هذه بالفعل طريقة التحقق من ذلك. يمكن أن يكون join_server_address
فارغًا أيضًا باستخدام interop.
bafonins ألا يزال لديك مصدر الرسم البياني؟
نظرًا لقيام الكثير من العمل ببناء ذلك بالفعل ، أعتقد أنه يجب علينا تحديث ذلك فقط لجعله مكتملًا للحصول على تمثيل واضح؟
يمكننا أيضًا العمل على تحديث جزء NS في وضع عدم الاتصال لعدم تشويش المناقشة هنا.
لقد قمت بتحديث الرسم البياني بجميع حقول NS الممكنة
الحقول باللون الأحمر إلزامية
rvolosatovs نحن نهدف إلى تحديد التدفق والحقول التي نقدمها في وحدة التحكم عند إنشاء الأجهزة وتحديثها.
كما،
mac_state.lorawan_version
mac_state.ping_slot_periodicity
من خلال CLI في الوقت الحاليsupports_class_b
و supports_class_c
و mac_state.device_class
؛ وهو جزء من الإنشاء ، وهو جزء من التحديث ، كيف يرتبط أحدهما ببعضه البعض؟0
)mac_settings
و mac_state.desired_parameters
؛ htdvisser هل يمكنك التفكير هنا؟لقد غيرت الترتيب في https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -553347858. الرجاء العمل بشكل متزايد على تلك القائمة.
هل يمكنك إضافة الحقول بالضبط في الأماكن الصحيحة من فضلك؟
لقد أجبت على هذا السؤال - أي لقد قدمت جميع الحقول التي يمكن تعيينها ويجب تعيينها على NS. أو على الأقل هكذا فهمت سؤالك.
فيما يتعلق بما يجب أن يكون في وحدة التحكم ، من المحتمل أن يكون كل شيء mac_state
قابلاً للتعيين فقط من خلال CLI ، ومع ذلك قد نطلب ذلك لأجهزة ABP / البث المتعدد و / أو أجهزة OTAA ، التي يتم تسجيلها في جلسة حالية ، و ، ومن ثم دولة MAC.
سوف أقوم بتحديث تعليقك.
لا ينبغي أن نغير العدادات الفردية ؛ سيفعل زر "إعادة تعيين عدادات الإطارات" (والذي يمكن أن يكون afaik إجراءً منفصلاً ، كما هو الحال في V2 Console ، وهو ضبط العدادات على 0)
نحن بحاجة إلى أن نكون قادرين على تعيين عدادات إطار الوصلة الهابطة لـ ABP والبث المتعدد - وإلا فلن يتمكن NS من إرسال روابط هابطة
بالنسبة إلى عدادات الإطارات للوصلة الصاعدة ، فهي مفيدة جدًا أيضًا من وجهة نظر الأمان لـ ABP
تحديث الجهاز
هنا ، سأذهب مع نهج مبوب ، بشكل أساسي مع خطوات المعالج كعلامات تبويب.
دعنا نستخدم نهج الأكورديون هنا ، كما هو موضح في التعليق الأول من bafonins :
سيعطينا عددًا أقل من المشكلات المتعلقة بالمساحة الأفقية ، ويسمح بتمييز الأوضاع باستخدام أزرار Edit
/ Create
.
تضمين التغريدة
نحن بحاجة إلى أن نكون قادرين على تعيين عدادات إطار الوصلة الهابطة لـ ABP والبث المتعدد - وإلا فلن يتمكن NS من إرسال روابط هابطة
بالنسبة إلى عدادات الإطارات للوصلة الصاعدة ، فهي مفيدة جدًا أيضًا من وجهة نظر الأمان لـ ABP
إذا كان هذا بسيطًا يمكننا القيام به. في الواقع ، قد يكون اثنان / ثلاثة مربعات إدخال أبسط من زر إعادة الضبط الذي يؤدي إلى إجراء معين.
فيما يتعلق بما يجب أن يكون في وحدة التحكم ، من المحتمل أن يكون كل شيء
mac_state
قابلاً للتعيين فقط من خلال CLI ، ومع ذلك قد نطلب ذلك لأجهزة ABP / البث المتعدد و / أو أجهزة OTAA ، التي يتم تسجيلها في جلسة حالية ، و ، ومن ثم دولة MAC.
أفهم. أعتقد أنه يجب علينا فصل "أجهزة ABP الجديدة وإعادة تعيينها" عن "أجهزة ABP الموجودة بالفعل على الشبكة".
يجب أن يكون الأول مكتملاً ، لذا يجب أن يشتمل على بعض mac_state
(أي ترددات إعادة ضبط المصنع ، وتأخير RX1 ، وإعدادات RX2 ، إلخ) ولكن ليس mac_state.desired_parameters
.
يجب أن يتم هذا الأخير عن طريق الترحيل ويمكننا إضافة إعدادات الضبط لاحقًا في وحدة التحكم ؛ في الوقت الحالي يجب استخدام CLI.
شكرا للتحديث
إعدادات LoRaWAN
- إذا كان NS في الكتلة: الحقول
mac_settings.factory_preset_frequencies
mac_settings.ping_slot_data_rate_index.value
mac_settings.ping_slot_frequency
mac_settings.ping_slot_periodicity.value
mac_settings.rx2_data_rate_index.value
هل هذه ضرورية لـ OTAA؟ أليس هذا فقط لـ ABP و Multicast؟
تضمين التغريدة
إعدادات LoRaWAN
- إذا كان NS في الكتلة: الحقول
mac_settings.factory_preset_frequencies
mac_settings.ping_slot_data_rate_index.value
mac_settings.ping_slot_frequency
mac_settings.ping_slot_periodicity.value
mac_settings.rx2_data_rate_index.value
هل هذه ضرورية لـ OTAA؟ أليس هذا فقط لـ ABP و Multicast؟
جميع إعدادات MAC اختيارية حسب التصميم.
الحالة الوحيدة التي تكون فيها هذه الأجهزة "مطلوبة" هي أجهزة البث المتعدد من الفئة ب ، وذلك بسبب مواصفات عملية الفئة ب.
بصرف النظر عن ذلك ، من المحتمل أن يكون مطلوبًا لـ ABP factory_preset_frequencies
للحصول على أفضل النتائج ، لكن لا شيء يمنع جهاز OTAA من الحصول على هذه المجموعة.
جميع إعدادات MAC اختيارية حسب التصميم.
الحالة الوحيدة التي تكون فيها هذه الأجهزة "مطلوبة" هي أجهزة البث المتعدد من الفئة ب ، وذلك بسبب مواصفات عملية الفئة ب.
نعم
بصرف النظر عن ذلك ، من المحتمل أن يكون
factory_preset_frequencies
مطلوبًا لـ ABP للحصول على أفضل النتائج ، لكن لا شيء يمنع جهاز OTAA من الحصول على هذه المجموعة.
إنه غير فعال بالنسبة لـ OTAA ؛ ترددات الانضمام الافتراضية مطلوبة حسب المواصفات ، وتأتي القنوات عبر أوامر قبول وقبول MAC. لا ينبغي أن يكون هناك تكوين خارج النطاق للترددات المحددة مسبقًا لأجهزة OTAA.
bafonins هل يمكنك إعطاء تحديث الحالة والجدول الزمني لهذه المشكلة؟
بالنسبة إلى app_s_key
و skip_payload_crypto
، هذا هو الشيء ؛
skip_payload_crypto
للجهاز النهائي. إذا كان true
، لا يقوم AS بتشفير الحمولة النافعة وفك تشفيرهاskip_payload_crypto
على مستوى التطبيق أيضًا (عبر Link ، مثل مُنسِّقات الحمولة) ، والتي لها الأسبقية على إعداد الجهاز النهائيapp_s_key
في AS ، ولكن قد يتم تغليفه ، على سبيل المثال لم يتم تعيين session.keys.app_s_key.key
(ولكن تم تعيين encrypted_key
و kek_label
)app_s_key
المشفر كما هو للعملاءskip_payload_crypto
true
(على رابط الجهاز أو التطبيق) ، فلا تهتم بـ app_s_key
: قم بتعطيله ، لا تهتم