Ringkasan:
Formulir tambah perangkat (ditambahkan di #573) saat ini tidak menyusun bidang berdasarkan batasan (kecuali untuk pemilihan ABP / OTAA). Misalnya, ini dapat menyembunyikan bidang yang hanya relevan untuk Versi LoRaWAN tertentu, atau mengganti nama bidang yang sesuai (mis. NwkSKey
vs. FNwkSIntKey
).
mengapa kita butuh ini?
Untuk UX yang lebih baik, hindari input yang salah
Apa yang sudah ada?
Formulir tambahkan perangkat, dengan bidang bersyarat berdasarkan OTAA/ABP
Apa yang hilang?
Pemeriksaan dan batasan yang lebih canggih diterapkan ke dalam formulir, mencegah input yang salah
Lingkungan:
Konsol di browser
Bagaimana Anda mengusulkan untuk menerapkan ini?
Kemungkinan menghubungkan ke acara perubahan bidang dan menulis bidang yang sesuai
Bisakah Anda melakukannya sendiri dan mengajukan Permintaan Tarik?
Ya.
Masalah utama dengan implementasi bentuk perangkat saat ini adalah bahwa semuanya digabungkan bersama. Hal ini menyebabkan
Saya mengusulkan untuk mengimplementasikan formulir perangkat sebagai formulir multi-langkah. Ini bisa terlihat seperti ini:
Pendekatan tersebut membahas semua masalah yang disebutkan di atas:
Join EUI
menjadi App EUI
untuk versi lorawan 1.0.x
.Perangkat pengeditan dapat diimplementasikan sebagai tumpukan akordeon:
Dimana setiap akordeon mengembang dengan bentuk yang berdiri sendiri.
Selain formulir perangkat, kami juga dapat menggunakan wizard untuk formulir aplikasi untuk:
cc @kschiffer @johanstokking @htdvisser
Kedengarannya bagus bagi saya, terutama jika kita dapat mengelompokkan bidang untuk komponen bersama-sama dalam satu langkah. Dengan begitu, kita dapat dengan mudah melewati/menonaktifkan langkah saat komponen tidak tersedia.
Referensi https://github.com/TheThingsNetwork/lorawan-stack/issues/1234 juga; bahkan jika JS tersedia, pengguna dapat melewati bidang JS.
Saya datang dengan diagram seperti itu:
Setiap simpul adalah langkah
Kelihatannya rumit, tetapi implementasi saat ini memiliki ruang status yang lebih besar terkait validasi/pengajuan/pembuatan topeng bidang/dll.
Pertimbangkan diagram sebagai proposisi awal untuk memulai diskusi.
Saya pikir ini adalah awal yang baik.
Dan beberapa hal kecil:
DevEUI
tidak dilarang untuk perangkat ABP (dapat diatur secara opsional)NwkKey
, hanya AppKey
FNwkSIntKey
disebut NwkSKey
(ke arah pengguna)NwkKey
atau AppKey
Ya, awal yang bagus.
- Mungkin alurnya akan lebih baik jika Join Server didahulukan.
Saya setuju dengan ini. Jika mode aktivasi adalah OTAA dan cluster JS diaktifkan, pada halaman JS pengguna mendapatkan pilihan untuk memasukkan kunci root dan menyimpannya di cluster JS. (jika mereka menonaktifkannya, NS menggunakan pencarian JS, sama seperti ketika tidak ada JS di cluster yang diaktifkan)
multicast bool
dan supports_join bool
. Ada 3 opsi yang memungkinkan, karena multicast && supports_join
tidak valid.frequency_plan
-> frequency_plan_id
resets_f_cnt
adalah opsional, false
secara default.
FNwkSIntKey
harus ditampilkan sebagai NwkKey
hanya untuk <1.1
FNwkSIntKey
tidak ada dalam pengaturan ABP NS untuk >= 1.1multicast
perangkat hanya perlu AppSKey
- NS tidak memerlukan kunci apa pun agar perangkat multicast
berfungsi, hanya AS@htdvisser
Mungkin alurnya akan lebih baik jika Join Server didahulukan.
Mengapa?
Hal penting yang kami belum benar-benar membuat kemajuan apa pun adalah pra-pengisian kolom dari template perangkat di repositori perangkat #263. Saya pikir itu benar-benar dapat menyederhanakan proses penyebaran produksi.
Bagi saya sepertinya di luar cakupan masalah ini
DevEUI tidak dilarang untuk perangkat ABP (dapat diatur secara opsional)
Apakah kita ingin mengaturnya untuk perangkat ABP juga? Saya akan mengatakan semakin sedikit bidang yang kita miliki, semakin baik. Namun, dibutuhkan kita bisa menambahkannya.
FNwkSIntKey disebut NwkSKey (terhadap pengguna)
Jadi labelnya harus NwkSKey
untuk 1.0.x dan 1.1.x ? Inilah yang kami miliki atm di konsol:
- Perangkat LoRaWAN 1.0.x tidak memiliki NwkKey, hanya AppKey
- Server Aplikasi tidak mendapatkan NwkKey atau AppKey
Tetap
@johanstokking
Jika mode aktivasi adalah OTAA dan cluster JS diaktifkan, pada halaman JS pengguna mendapatkan pilihan untuk memasukkan kunci root dan menyimpannya di cluster JS. (jika mereka menonaktifkannya, NS menggunakan pencarian JS, sama seperti ketika tidak ada JS di cluster yang diaktifkan).
Jadi ini hanya masalah mengizinkan pengguna untuk melewati langkah pengiriman server bergabung? Tidak ada permintaan ke js sama sekali?
Mengenai https://github.com/TheThingsNetwork/lorawan-stack/issues/1134 , dapatkah Anda juga menentukan di mana bidang-bidang ini termasuk dalam diagram?
@rvolosatovs
Mode aktivasi" dalam payload - dalam diagram Anda, ini sesuai dengan sebenarnya 2 bidang - multicast bool dan support_join bool. Ada 3 opsi yang memungkinkan, karena multicast && support_join tidak valid.
Hanya untuk mengklarifikasi:
supports_join=true
- OTAAsupports_join=false
- ABPmulticast=true && **no** supports_join
- multicastresets_f_cnt adalah opsional, salah secara default.
Saya pikir masih baik untuk menunjukkannya kepada pengguna. Haruskah mengizinkan pengguna mengaturnya untuk perangkat multicast?
FNwkSIntKey harus disajikan sebagai NwkKey hanya untuk <1.1
Maksudnya NwkSKey
?
frekuensi_rencana -> frekuensi_rencana_id
FNwkSIntKey tidak ada dalam pengaturan ABP NS untuk >= 1.1
Tetap
Diagram yang diperbarui:
@htdvisser
Mungkin alurnya akan lebih baik jika Join Server didahulukan.
Mengapa?
Ya saya datang kembali ini; Saya pikir lebih masuk akal untuk memasukkan versi MAC sebelum memasukkan kunci. Jadi saya mendukung aliran saat ini. Jika versi MAC dimasukkan (saat NS diaktifkan), kita tidak perlu meminta NwkKey
karena itu 1.1.x.
Hal penting yang kami belum benar-benar membuat kemajuan apa pun adalah pra-pengisian kolom dari template perangkat di repositori perangkat #263. Saya pikir itu benar-benar dapat menyederhanakan proses penyebaran produksi.
Bagi saya sepertinya di luar cakupan masalah ini
Ini di luar jangkauan memang.
DevEUI tidak dilarang untuk perangkat ABP (dapat diatur secara opsional)
Apakah kita ingin mengaturnya untuk perangkat ABP juga? Saya akan mengatakan semakin sedikit bidang yang kita miliki, semakin baik. Namun, dibutuhkan kita bisa menambahkannya.
Ya, kami ingin memintanya secara opsional. Semakin banyak informasi identifikasi yang kami miliki tentang perangkat akhir, semakin baik. Ini juga diperlukan dalam roaming pasif stateful. Alasan kami tidak memaksa pengguna untuk memasukkan DevEUI, karena jika tidak ada DevEUI, kami tidak ingin pengguna memasukkan nilai palsu.
FNwkSIntKey disebut NwkSKey (terhadap pengguna)
Jadi labelnya harus
NwkSKey
untuk 1.0.x dan 1.1.x ? Inilah yang kami miliki atm di konsol:
Ini NwkSKey
untuk 1.0.x dan FNwkSIntKey
untuk 1.1.x.
Jika mode aktivasi adalah OTAA dan cluster JS diaktifkan, pada halaman JS pengguna mendapatkan pilihan untuk memasukkan kunci root dan menyimpannya di cluster JS. (jika mereka menonaktifkannya, NS menggunakan pencarian JS, sama seperti ketika tidak ada JS di cluster yang diaktifkan).
Jadi ini hanya masalah mengizinkan pengguna untuk melewati langkah pengiriman server bergabung? Tidak ada permintaan ke js sama sekali?
Memang.
Contohnya adalah perangkat yang menampilkan modem Semtech yang menggunakan Server Gabung Semtech. Kita hanya perlu mengetahui EUI dalam kasus itu.
Mengenai #1134, dapatkah Anda juga menentukan di mana bidang-bidang ini termasuk dalam diagram?
Mereka termasuk dalam langkah JS; bidang ini menjadi JS, jika JS diaktifkan di cluster dan jika pengguna ingin menyediakan perangkat di JS.
Bidang ini opsional.
Hanya untuk mengklarifikasi:
supports_join=true
- OTAAsupports_join=false
- ABPmulticast=true && **no** supports_join
- multicast
Apakah ini benar?
Dengan ketat:
supports_join
!supports_join && !multicast
multicast
Tidak valid adalah supports_join && multicast
, tetapi ini (atau harus) divalidasi di NS.
resets_f_cnt adalah opsional, salah secara default.
Saya pikir masih baik untuk menunjukkannya kepada pengguna. Haruskah mengizinkan pengguna mengaturnya untuk perangkat multicast?
Tidak, ini bukan untuk multicast. resets_f_cnt
merujuk ke uplink, tetapi tidak ada uplink di multicast.
FNwkSIntKey harus disajikan sebagai NwkKey hanya untuk <1.1
Maksudnya
NwkSKey
?
Seharusnya NwkSKey
memang.
@bafonins silakan lihat jawaban @johanstokking .
Sehubungan dengan multicast
- alamat perangkat juga diperlukan
DevEUI
ke perangkat abp/multicastDevice Address
ke perangkat multicastAlamat Perangkat masih hilang dari pengaturan Server Jaringan perangkat multicast
Alamat Perangkat masih hilang dari pengaturan Server Jaringan perangkat multicast
Diperbarui
Multicast dapat berupa 1.0.x dan 1.1.x. Memasukkan informasi sesi ( DevAddr
dan kunci) sama untuk multicast seperti untuk ABP.
Juga resets_join_nonces
dapat diatur dalam JS dengan 1.1.x
Memisahkan pembuatan perangkat pasti diperlukan dan cara yang bagus untuk mendapatkan alur dan implementasi yang lebih dekat dengan persyaratan backend, sekaligus mengurangi kerumitan bagi pengguna.
Beberapa pemikiran dan tantangan yang saya lihat:
Kompleksitas yang tidak perlu di js sdk untuk pembuatan/pembaruan/penghapusan batch serta logika rollback pembuatan
Saya pikir fungsionalitas yang ada di SDK untuk memisahkan dan menggabungkan permintaan perangkat masih cukup berharga, bahkan jika kami tidak menggunakannya dalam kasus ini
@johanstokking untuk perangkat multicast NS hanya membutuhkan SNwkSIntKey
dalam 1.1 untuk perhitungan MIC. FNwkSIntKey
dan NwkSEncKey
, pada kenyataannya, seharusnya tidak diizinkan untuk mengatur IMO.
- Kita harus menambahkan fungsionalitas untuk membatalkan seluruh aliran, yang mengakibatkan penghapusan entri registri apa pun yang telah dibuat.
- Demikian juga, pergi ke langkah sebelumnya perlu menempatkan formulir dalam "mode pembaruan" (harus relatif mudah karena titik akhir sama, kecuali untuk IS)
Saya tidak berpikir kita harus membuat apa pun sebelum mencapai Finish atau semacamnya. Bolak-balik dalam wizard dan menutup jendela browser seharusnya tidak menghasilkan perangkat yang setengah jadi.
- Satu masalah yang saya lihat adalah langkah Server Aplikasi yang sangat dangkal (apakah ini akan berubah nanti?) dan menambahkan opsi format muatan di sana juga tidak terlalu sesuai dengan kebutuhan pengguna saat membuat perangkat.
Kami akan menambahkan konfigurasi untuk paket aplikasi di sini (yaitu pengaturan multicast jarak jauh, transfer blok data terfragmentasi, opsi modem Semtech, dll). Jadi ya itu dangkal sekarang tapi itu akan diperpanjang.
- Solusinya mungkin menggabungkan langkah AS dan JS mengingat keduanya cukup mudah dan tidak saling bergantung. Saya menyadari ini bertentangan dengan pemisahan berdasarkan komponen tetapi saya pikir ini akan menyederhanakan seluruh aliran dengan abstraksi yang masuk akal. Terutama mengingat bahwa kami tidak mengomunikasikan koneksi apa pun ke komponen tumpukan masing-masing dalam langkah-langkahnya.
Untuk diri kita di masa depan, saya akan merekomendasikan untuk memisahkan mereka. Menggabungkannya juga membuat rendering hal-hal pada halaman tersebut bergantung pada ketersediaan komponen yang menambah kompleksitas pada aliran yang sudah kompleks.
Bergantung pada konfigurasi tumpukan, kita mungkin berakhir dengan wizard yang hanya memiliki satu atau dua langkah, yang merupakan anti-pola untuk wizard.
- Untuk kasus hanya satu langkah, kita cukup menyembunyikan/menghapus aspek wizard
- Untuk dua langkah, saya pikir kita harus hidup dengan masalah ini
Harus dipertimbangkan bahwa solusi wizard akan sedikit meningkatkan _time-to-complete_ untuk cerita pengguna
- Ini bisa menjadi masalah dalam situasi di mana banyak perangkat perlu dibuat dengan tangan, meskipun kami akan memperkenalkan fitur pembuatan batch untuk kasus penggunaan ini dan CLI/scripting dapat membantu dengan situasi seperti itu juga.
- Namun, pertimbangkan perbedaannya dengan pembuatan perangkat konsol V2 dan bagaimana pengguna dapat melihat perubahan ini
Pemisahan komponen dan skenario penerapan fleksibel adalah salah satu perubahan utama dibandingkan dengan V2, jadi sangat masuk akal jika ini efektif di Konsol V3.
Memang, untuk membuat perangkat dalam jumlah besar, orang harus tetap menggunakan API dan CLI.
Tidak ada skenario dengan satu langkah, selalu ada setidaknya dua langkah.
Bagaimana dengan merender tab alih-alih halaman? Dengan cara itu masih satu halaman tetapi semuanya mudah diakses tanpa bolak-balik dalam langkah-langkah.
@johanstokking
Saya tidak berpikir kita harus membuat apa pun sebelum mencapai Finish atau semacamnya.
Jika kita membuat permintaan yang sebenarnya hanya pada langkah terakhir, maka itu berarti kita akan membuat 3-4 permintaan. Bagaimana kami menangani kesalahan yang dikembalikan oleh komponen yang berbeda? Menangani ini, menavigasi pengguna ke langkah yang salah/menyetel ulang toko/dll. kompleks. Itulah mengapa saya menyarankan untuk mengirimkan nilai pada setiap langkah, karena setiap langkah yang berurutan dapat mengandalkan nilai yang dikirimkan sebagai valid.
Bolak-balik dalam wizard dan menutup jendela browser seharusnya tidak menghasilkan perangkat yang setengah jadi.
Saya menentang mengizinkan pengguna untuk mengedit data di wizard (untuk langkah-langkah yang menghasilkan pengiriman). Mb, hanya bidang opsional yang disimpan dalam satu komponen (dan tidak ada komponen lain yang memerlukannya), katakan name
, description
. Jika tidak, penanganan ini menjadi cukup rumit.
@kschiffer
Bergantung pada konfigurasi tumpukan, kita mungkin berakhir dengan wizard yang hanya memiliki satu atau dua langkah, yang merupakan anti-pola untuk wizard.
Nah, kami terbuka untuk solusi alternatif. Ada proposisi?
Jika kita membuat permintaan yang sebenarnya hanya pada langkah terakhir, maka itu berarti kita akan membuat 3-4 permintaan. Bagaimana kami menangani kesalahan yang dikembalikan oleh komponen yang berbeda? Menangani ini, menavigasi pengguna ke langkah yang salah/menyetel ulang toko/dll. kompleks. Itulah mengapa saya menyarankan untuk mengirimkan nilai pada setiap langkah, karena setiap langkah yang berurutan dapat mengandalkan nilai yang dikirimkan sebagai valid.
OKE. Tidak apa-apa, selama Konsol dapat menangani perangkat yang ada di ER tetapi tidak dapat ditemukan di JS/NS/AS karena langkah itu gagal atau pengguna menutup tab atau semacamnya.
Saya menentang mengizinkan pengguna untuk mengedit data di wizard (untuk langkah-langkah yang menghasilkan pengiriman). Mb, hanya bidang opsional yang disimpan dalam satu komponen (dan tidak ada komponen lain yang memerlukannya), katakan
name
,description
. Jika tidak, penanganan ini menjadi cukup rumit.
Apa maksudmu?
Perhatikan bahwa AS, misalnya, tidak memerlukan bidang apa pun, hanya perlu perangkat yang ada. Jadi, jika AS ada di sana, meskipun pengguna tidak memasukkan nilai apa pun untuk AS, ia tetap harus membuat perangkat (kosong) di AS.
Apa maksudmu?
Maaf. Ini untuk saran @kschiffer :
Demikian juga, pergi ke langkah sebelumnya perlu menempatkan formulir dalam "mode pembaruan" (harus relatif mudah karena titik akhir sama, kecuali untuk IS)
Bolak-balik dalam wizard dan menutup jendela browser seharusnya tidak menghasilkan perangkat yang setengah jadi.
Saya akan menganggap ini sebagai perbaikan di masa depan. Untuk saat ini kami hanya dapat menampilkan pemberitahuan kepada pengguna tentang alur yang belum selesai. Nantinya, pengguna dapat mengedit/menghapus perangkat di halaman pengaturan umum.
Nah, kami terbuka untuk solusi alternatif. Ada proposisi?
Yah, saya pikir mengingat _edge-casiness_ dari situasi khusus ini, tidak apa-apa untuk hidup dengan masalah ini. Kata-kata Anda menyarankan bahwa saya tidak boleh mengatakan masalah tanpa solusi yang diusulkan, tetapi saya ingin memberi orang lain kesempatan untuk mengemukakan beberapa jika saya tidak dapat segera menemukannya.
Saya menentang mengizinkan pengguna untuk mengedit data di wizard (untuk langkah-langkah yang menghasilkan pengiriman). Mb, hanya bidang opsional yang disimpan dalam satu komponen (dan tidak ada komponen lain yang memerlukannya), katakan
name
,description
. Jika tidak, penanganan ini menjadi cukup rumit.
Ini sekali lagi akan melanggar praktik terbaik untuk pola wizard. Pengguna mungkin ingin merevisi atau hanya memeriksa bidang sebelumnya, terutama mengingat bahwa ini saling bergantung. Saya baik-baik saja dengan tidak menyertakan fungsi ini pada awalnya, tetapi pada akhirnya harus ditambahkan (seperti dalam: terus melacak dalam suatu masalah).
Jika tidak, penanganan ini menjadi cukup rumit.
Secara umum, kebutuhan untuk menerapkan logika frontend yang kompleks seharusnya tidak memengaruhi komitmen kami terhadap UX.
Saya akan menganggap ini sebagai perbaikan di masa depan. Untuk saat ini, kami hanya dapat menampilkan pemberitahuan kepada pengguna tentang alur yang belum selesai. Nantinya, pengguna dapat mengedit/menghapus perangkat di halaman pengaturan umum.
Tidak optimal tetapi dapat diterima bagi saya, selama kami akan meningkatkan ini pada akhirnya.
Seperti yang dibahas secara offline, inilah proposal awal;
ids
name
description
attributes
lorawan_version
lorawan_phy_version
pengaturan LoRaWAN
lorawan_version
(wajib)lorawan_phy_version
(wajib)supports_join
disetel jika Mode Aktivasi adalah OTAA (wajib)multicast
disetel jika Mode Aktivasi multicastsupports_class_b
supports_class_c
frequency_plan_id
(wajib)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
- diperlukansession.keys.s_nwk_s_int_key.key
(jika LW >= 1.1.0) - diperlukansession.keys.nwk_s_enc_key.key
(jika LW >= 1.1.0) - diperlukansession.keys.app_s_key.key
- diperlukansession.last_conf_f_cnt_down
session.last_n_f_cnt_down
mac_settings.resets_f_cnt
session.last_f_cnt_up
- ini diperlukan untuk keamananJika NS dalam cluster: Kolom jika mode aktivasi adalah ABP atau 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
Ini menetapkan perangkat dalam NS dan AS (jika dalam cluster). Jika kami memiliki perangkat OTAA, kami tidak memiliki apa pun untuk diatur dalam AS pada saat ini, tetapi saya masih akan meminta konsistensi
payload_formatters
root_keys.root_key_id
root_keys.app_key.key
root_keys.nwk_key.key
(jika LW >= 1.1.)resets_join_nonces
home_net_id
network_server_kek_label
application_server_kek_label
application_server_id
Di sini, saya akan menggunakan pendekatan tab, pada dasarnya dengan langkah-langkah wizard sebagai tab.
Kuncinya di sini adalah itu;
ids
, supports_join
, multicast
adalah hanya-bacasupports_join
!supports_join && !multicast
!supports_join && multicast
(walaupun multicast
seharusnya cukup)Beberapa kasus penggunaan untuk mendukung dalam memperbarui perangkat:
lorawan_version
dan lorawan_phy_version
(ini mengubah batasan)root_keys != nil
) tetapi tidak terbuka ( root_keys.app_key == null
dll). Pengguna harus dapat membiarkan kunci root tetap utuhSaya pikir https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -525719408 sudah berisi semua yang diperlukan untuk NS.
Saya pikir semua mac_settings
harus tersedia untuk disetel untuk semua perangkat non-multicast.
Untuk perangkat multicast hanya yang berikut ini yang masuk akal:
Mungkin beberapa hal untuk memperjelas
Membuat:
supports_class_b
?Memperbarui:
true
, atau untuk mengatur ulang status perangkat di NSHal-hal umum:
Jika kita berbicara tentang bidang tingkat atas:
https://github.com/TheThingsNetwork/lorawan-stack/blob/375c82cc068bbadb72b887e25631f8f2dc03a366/api/end_device.proto#L395 -L418 seluruh potongan ini termasuk dalam NS (tetapi tidak semua ini diperlukan)
m{in,ax}_frequency
tidak berlaku untuk multicast
@rvolosatovs
Saya pikir #579 (komentar) sudah berisi semua yang diperlukan untuk NS.
Saya pikir semua
mac_settings
harus tersedia untuk disetel untuk semua perangkat non-multicast.
Untuk perangkat multicast hanya yang berikut ini yang masuk akal:
Salah satu masalah dengan masalah ini adalah jumlah informasi yang terkubur dalam komentar.
Bisakah Anda menambahkan _persis_ bidang di tempat yang tepat? Saya baik-baik saja jika Anda menyalin seluruh daftar poin-poin saya sehingga kami secara bertahap mengerjakannya sampai kami memiliki versi final.
@htdvisser
- Pengaturan Umum
Sebuah. Saat kami membuat perangkat di UGD, kami tidak menetapkan alamat NS/AS/JS. Apakah kami memperbarui pendaftaran ER ketika perangkat diatur di dalamnya? Bagaimana jika kita menggunakan JS eksternal?
Saya pikir kita harus memperbarui alamat ketika kita mengatur perangkat di AS/NS/JS.
B. Apakah kita menyimpan mode aktivasi di UGD?
Tidak, kami tidak memiliki bidang untuk itu saat ini, kami tidak benar-benar membutuhkannya dan itu menciptakan ruang untuk inkonsistensi.
C. Apakah kami menyimpan versi phy/mac di UGD?
Tidak, lihat dokumentasi API. Sekali lagi, saya tidak melihat kebutuhan dan itu menciptakan ruang untuk inkonsistensi.
Sebuah. Bagaimana dengan
supports_class_b
?
Ya, saya kira kita harus menambahkan itu, menunggu #19. @rvolosatovs harap sertakan ini dalam versi yang diperbarui jika relevan.
- Pengaturan aplikasi
Sebuah. Ya, ini bisa berarti kita menyetel perangkat pada AS dua kali
Ya, itu tidak sakit
Memperbarui:
- Mode aktivasi: akan jauh lebih mudah jika kita menyimpannya di ER
Ya, tetapi saya tidak yakin apakah kita harus mencari kemudahan dan apakah itu berlaku sepenuhnya. Kita harus memilikinya tersedia di jalur panas.
Juga, itu hanya akan mudah jika kita bisa memulai dari awal yang bersih. Namun, kita harus kompatibel ke belakang, menambahkan heuristik ketika lorawan_version
tidak ada di ER, memperkenalkan dapatkan bersyarat dari NS, dll.
- Apakah kita hanya melihat alamat 404 atau juga alamat NS/AS/JS di UGD?
Kami hanya bisa mendapatkan 404 jika ada set alamat, jika tidak, tidak ada yang bisa didapat. Kita harus menafsirkan keduanya sebagai "tidak dalam registri itu". Kami tidak dapat membuat kesalahan di sini (seperti yang kami lakukan sebelumnya), tepatnya karena pembuatan dalam IS dan AS/NS/JS tidak terjadi secara bersamaan, dan pengguna harus dapat memulihkan inkonsistensi yang dibuat oleh Konsol.
- Saya pikir akan lebih baik untuk dapat menghapus pendaftaran NS/AS/JS individu misalnya ketika mengubah "JS eksternal" menjadi
true
, atau untuk mengatur ulang status perangkat di NS
Ya, mari kita lakukan nanti
- _"JS eksternal adalah tempat JS tidak berada dalam cluster yang sama dengan NS"_: Saya pikir ini harus seperti "join_server_address tidak sama dengan alamat JS di konfigurasi konsol"
Ya, itu memang cara untuk memeriksanya. join_server_address
juga bisa dikosongkan, menggunakan interop.
@bafonins apakah Anda masih memiliki sumber grafiknya?
Karena sudah banyak pekerjaan yang dilakukan untuk membangunnya, saya pikir kita harus memperbaruinya untuk membuatnya lengkap untuk memiliki representasi yang jelas?
Kami juga dapat bekerja untuk memperbarui bagian NS secara offline agar tidak mengacaukan diskusi di sini.
Saya memperbarui grafik dengan semua bidang NS yang mungkin
Kolom yang berwarna merah adalah wajib
@rvolosatovs kami bertujuan untuk menentukan alur dan bidang yang kami sajikan di Konsol saat membuat dan memperbarui perangkat.
Dengan demikian,
mac_state.lorawan_version
mac_state.ping_slot_periodicity
melalui CLI untuk saat inisupports_class_b
, supports_class_c
dan mac_state.device_class
; mana yang merupakan bagian dari pembuatan, mana yang merupakan bagian dari pembaruan, bagaimana hubungan satu sama lain?0
)mac_settings
dan mac_state.desired_parameters
; @htdvisser dapatkah Anda berpikir bersama di sini?Saya mengubah urutan di https://github.com/TheThingsNetwork/lorawan-stack/issues/579#issuecomment -553347858. Silakan bekerja secara bertahap pada daftar itu.
Bisakah Anda menambahkan bidang yang tepat di tempat yang tepat?
Saya menjawab pertanyaan ini - yaitu saya menyajikan semua bidang, yang dapat diatur dan harus diatur pada NS. Atau setidaknya begitulah saya memahami pertanyaan Anda.
Mengenai apa yang seharusnya ada di konsol, semua mac_state
mungkin hanya dapat disetel melalui CLI, namun kami mungkin mengharuskannya untuk perangkat ABP/multicast dan/atau perangkat OTAA, yang didaftarkan dengan sesi yang ada, dan, maka status MAC.
Saya akan memperbarui komentar Anda.
Kita seharusnya tidak mengubah penghitung individu; tombol "setel ulang penghitung bingkai" (yang afaik dapat menjadi tindakan terpisah, seperti yang kita miliki di Konsol V2, yang menyetel penghitung ke 0)
Kami harus dapat mengatur penghitung bingkai downlink untuk ABP dan multicast - jika tidak, NS tidak dapat mengirim downlink
Untuk penghitung bingkai uplink juga sangat berguna dari sudut pandang keamanan untuk ABP
Perbarui perangkat
Di sini, saya akan menggunakan pendekatan tab, pada dasarnya dengan langkah-langkah wizard sebagai tab.
Mari kita gunakan pendekatan akordeon di sini, seperti yang disajikan dalam komentar pertama dari @bafonins :
Ini akan memberi kita lebih sedikit masalah dengan ruang horizontal, dan memungkinkan untuk membedakan mode dengan tombol Edit
/ Create
.
@rvolosatovs
Kami harus dapat mengatur penghitung bingkai downlink untuk ABP dan multicast - jika tidak, NS tidak dapat mengirim downlink
Untuk penghitung bingkai uplink juga sangat berguna dari sudut pandang keamanan untuk ABP
Jika ini sederhana kita bisa melakukannya. Faktanya, dua/tiga kotak input mungkin lebih sederhana daripada tombol reset yang memicu tindakan tertentu.
Mengenai apa yang seharusnya ada di konsol, semua
mac_state
mungkin hanya dapat disetel melalui CLI, namun kami mungkin mengharuskannya untuk perangkat ABP/multicast dan/atau perangkat OTAA, yang didaftarkan dengan sesi yang ada, dan, maka status MAC.
Saya mengerti. Saya pikir kita harus memisahkan "perangkat ABP baru dan reset" dari "perangkat ABP yang sudah ada yang sudah ada di jaringan".
Yang pertama harus lengkap, jadi harus menyertakan beberapa mac_state
(yaitu frekuensi reset pabrik, penundaan RX1, setelan RX2, dll) tetapi tidak mac_state.desired_parameters
.
Yang terakhir harus dilakukan melalui migrasi dan kita dapat menambahkan pengaturan fine tuning nanti di Konsol; untuk saat ini CLI harus digunakan.
Terima kasih telah memperbarui
pengaturan LoRaWAN
- Jika NS dalam cluster: Fields
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
Apakah ini diperlukan untuk OTAA? Bukankah ini hanya untuk ABP dan Multicast?
@johanstokking
pengaturan LoRaWAN
- Jika NS dalam cluster: Fields
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
Apakah ini diperlukan untuk OTAA? Bukankah ini hanya untuk ABP dan Multicast?
Semua pengaturan MAC bersifat opsional berdasarkan desain.
Satu-satunya kasus di mana ini "diperlukan" adalah perangkat multicast kelas B, yang disebabkan oleh spesifikasi operasi kelas B.
Selain itu, factory_preset_frequencies
kemungkinan diperlukan untuk ABP untuk hasil terbaik, tetapi tidak ada yang mencegah perangkat OTAA untuk memiliki set itu.
Semua pengaturan MAC bersifat opsional berdasarkan desain.
Satu-satunya kasus di mana ini "diperlukan" adalah perangkat multicast kelas B, yang disebabkan oleh spesifikasi operasi kelas B.
oke
Selain itu,
factory_preset_frequencies
kemungkinan diperlukan untuk ABP untuk hasil terbaik, tetapi tidak ada yang mencegah perangkat OTAA untuk memiliki set itu.
Ini tidak efektif untuk OTAA; frekuensi gabungan default diperlukan oleh spesifikasi, dan saluran masuk melalui perintah join-accept dan MAC. Tidak boleh ada konfigurasi frekuensi preset out-of-band untuk perangkat OTAA.
@bafonins dapatkah Anda memberikan pembaruan status dan garis waktu tentang masalah ini?
Untuk app_s_key
dan skip_payload_crypto
, inilah masalahnya;
skip_payload_crypto
dari perangkat akhir. Jika true
, AS tidak melakukan enkripsi dan dekripsi muatanskip_payload_crypto
pada tingkat aplikasi (melalui Tautan, seperti pemformat muatan), yang lebih diutamakan daripada pengaturan perangkat akhirapp_s_key
di AS, tetapi mungkin dibungkus, yaitu session.keys.app_s_key.key
tidak disetel (tetapi encrypted_key
dan kek_label
disetel)app_s_key
terenkripsi apa adanya kepada klienskip_payload_crypto
diatur true
(pada perangkat akhir atau tautan aplikasi), jangan repot-repot dengan app_s_key
: nonaktifkan, tidak peduli